2016-11-30 10 views
1

これはエラーです。MySqlでこのエラーを解決するにはcodeigniterのクエリ構文?

SQL構文に誤りがあります。ライン1

に近い ' Sensor = 'sklfjを使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルを確認してください'、 Lens = 'lkjsdf'、 IR = 'lkjdsf'、 Audio = 'kjlasf'、 `WDR' Product_model.php

$this->db->where('product_id', $product_id); 
$this->db->update($tbname, $spec_array); 

UPDATE `hdtvicameras_spec` 
SET `Resolution` = 'd', 
`Image` `Sensor` = 'sklfj', 
`Lens` = 'lkjsdf', 
`IR` = 'lkjdsf', 
`Audio` = 'kjlasf', 
`WDR` = 'lkjsf1', 
`ICR` = 'klasjf', 
`IP` `Rating` = 'lkjsdf', 
`Zoom` = 'ljs' 
WHERE 
    `product_id` = '46' 

var_dump($spec_array)した後、これは私が得るものです

array(10) { 
    ["Resolution"]=> string(5) "first" 
    ["Image Sensor"]=> string(6) "second" 
    ["Lens"]=> string(6) "third " 
    ["IR"]=> string(6) "fourth" 
    ["Audio"]=> string(6) "fifthe" 
    ["WDR"]=> string(6) "sisxth" 
    ["ICR"]=> string(5) "seven" 
    ["IP Rating"]=> string(5) "eight" 
    ["Zoom"]=> string(4) "nine" 
    ["SD Card"]=> string(3) "ten" 
} 

これらのすべてのキー値は、製品の仕様名であるデータベースから取得されます。

のように、キー名にスペースがあるようです。誰も私がこれを解決するのを助けることができますか?

+0

ここでは、あなたの '$のspec_array'にしてImageSensor'または他のいくつかのこと'に '' Image' Sensor'を変更する必要があります。 –

+0

@MayankVadiyaありがとう...私はこの関数str_replace( ''、 '_ "、$ specification);を使用していますので、スペースがあれば' _ 'に置き換えられます。 :) – ravi

答えて

1

私はあなたがここでエラーを持っていると思う:画像の後

`Image` `Sensor` = 'sklfj', 

をあなたがそれに価値を与えていません。このチェックのような

+0

実際に 'イメージセンサー'は1つのプロパティだけです...カメラがイメージセンサーを含むかどうかを定義します.... キー名にスペースを使用できますか? – ravi

+0

バックティックを正しく使用してください。 ImageSensor'はこのように –

+0

私はテーブル全体を変えなければならないようです... – ravi

3

使用クエリは:

UPDATE `hdtvicameras_spec` 
SET `Resolution` = 'd', 
`Image Sensor` = 'sklfj', 
`Lens` = 'lkjsdf', 
`IR` = 'lkjdsf', 
`Audio` = 'kjlasf', 
`WDR` = 'lkjsf1', 
`ICR` = 'klasjf', 
`IP Rating` = 'lkjsdf', 
`Zoom` = 'ljs' 
WHERE `product_id` = '46' 

あなたはもっとして1つの単語、その示すエラーを持つフィールド名を、引用符を追加しましたので。

1

イメージセンサは空白の列なので、エラーが発生しています。 CIは、すべてのフィールドにスペースを使用してを追加しています。 MySQLでカラムのスペースを使うのは良い習慣ではありません。

この問題を解決するには、以下の形式でスペースを削除するか、クエリを記述して$this->db->query()に渡すか、

UPDATE `hdtvicameras_spec` 
SET `Resolution` = 'd', `Image Sensor` = 'sklfj', `Lens` = 'lkjsdf', `IR` = 'lkjdsf', `Audio` = 'kjlasf', `WDR` = 'lkjsf1', `ICR` = 'klasjf', `IP Rating` = 'lkjsdf', `Zoom` = 'ljs' 
WHERE `product_id` = '46' 
+0

ああ...私はスペースを含むすべてのテーブルを変更し、 '_'で置き換えました... ありがとう:) – ravi

関連する問題