如何解决codeigniter中的MySql查询语法中的这个错误?

时间:2016-11-30 06:49:12

标签: php mysql codeigniter

这是我得到的错误..

  

您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在' Sensor =' sklfj',Lens =' lkjsdf'附近使用正确的语法。 ,IR =' lkjdsf',Audio =' kjlasf',`WDR'在第1行

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'

Product_model.php

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

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" 
}

数组中的所有键值都是从数据库中获取的,数据库是任何产品的规范名称。

看起来键名中有一些空格错误。任何人都可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分: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 :(得分:1)

我认为你在这里有错误:

`Image` `Sensor` = 'sklfj',

在图像之后,你没有给它赋值。

答案 2 :(得分:1)

由于Image Sensor是一个包含空格的列,因此您收到错误。 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'