2017-06-23 14 views
1

データベースにクエリする際に問題があります。私は環境を提供されているので、私は変更できません。そして、それはデータベースで作業できるように私が適応しようとしているJoomlaです。PHP SQLクエリは、文字列データ型のときに 'unknown colum'を返します。

私はクエリを作成し、数字のときに正しく挿入されるデータを取得しますが、文字列を入力すると 'unknown column'が返されます。

単引用符や二重引用符でPHPコードがどのように解釈されているのかは分かりませんが、私はそれを見ることができません。

ここに私が追加しているPHPコードがあります。 joomlaが提供するJDatabase式でサポートされています。

// Get a db connection. 
$db = JFactory::getDbo(); 

// Create a new query object. 
$query = $db->getQuery(true); 

// Insert columns. 
$columns = array("De", "Para"); 

// Insert values. 
$data = $_POST['form']; 
$de = $data[De]; 
$para = $data[Para]; 

$values = array($de, $para); 

// Prepare the insert query. 
$query 
    ->insert($db->quoteName('referencias')) 
    ->columns($db->quoteName($columns)) 
// ->values($de, $para); 

    ->values(implode(',', $values)); 

// Set the query using our newly populated query object and execute it. 
$db->setQuery($query); 
$db->execute(); 

あなたが見るようにフォームの2つのフィールド(列)を試しています。私は、フォームのフィールドのいずれかで「asfasd」と入力し、POST場合はそれが返されます。

を不明な列「asfasd」「フィールドリスト」で

しかし、私は番号を入力すると、それだけで追加データベースに登録する。

編集:データ型はSQLデータベースで 'varchar'です。

ありがとうございます。

+0

dbの列は数値に設定されていますか? – Syfer

+0

@Syferそれはvarcharとして設定されています – Sam

答えて

1
$values = array($de, $para); 

のはDe = 3Para = asd

$values_str = implode(',', $values); 

$values_str今すぐ3','asd

$values_str = "'" . $values_str . "'"; \\<--This is missing step 

なり、$values_str'3','asd'

. 
. 
. 
->values($values_str); 
になると仮定しましょう

なぜ値を畳み込んで文字列を作りたいのかわかりません。しかし、あなたがしたい場合は、両端に引用符を追加する必要があります。

+0

ああ申し訳ありませんが、私はそれを持っていませんでしたが、私はいくつかの試みをしていたときにここに公開するためにそれを変更することを忘れました。 まさに私は持っていた $ de = $ data [De]; $ para = $ data [Para]; あなたの現在の目的を試してみてください。同じエラーが返されます。ありがとうございます。 – Sam

+0

'De'と' Para'列のデータ型を提供してください。私は、フィールドのデータ型が数値の場合は、あなたのコードにimplodeを介して現時点で何をしているのかを一重引用符で囲んではいけません。 –

+0

SQLデータベースでvarcharとして宣言されています。私はポストに情報を追加します。ありがとう。 – Sam

関連する問題