我是CodeIgniter的新手,我收到一个我无法理解的错误。
这是给出错误的代码:
$data = array('adr' => $address);
$this->db->where('id', $id);
$this->db->update('domains', $data);
错误是:
您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第1行'://www.example.com WHERE id
='10''附近使用正确的语法
这是查询:
UPDATE `domains` SET `adr` = http://www.example.com WHERE `id` = '10'
如果我将其更改为
UPDATE `domains` SET `adr` = 'http://www.example.com' WHERE `id` = '10'
它有效。为什么CodeIgniter会创建这个错误的查询?
答案 0 :(得分:0)
在调用更新方法之前,请尝试转义$address
变量中的单引号。
答案 1 :(得分:0)
通常,CodeIgniter会使用单引号自动包围$ address的值。我不知道你为什么收到这条错误信息?
答案 2 :(得分:0)
我有同样的问题,codeigniter不会向where子句添加单个qoutes。
当你输入整数值时,sql不会给出错误但是当你把字符串值(作为变量)放到where子句时,它会给出错误。但是,当您添加单引号进行查询并在phpmyadmin上运行时,它可以正常工作。
因此,解决方案是在您的变量中添加(string)
语句:如此(string)$id
我之前写过将单引号添加到变量为'$ id',但这不会起作用(我是codeigniter&amp; php的新手,感谢评论家Mitchell McKenna,我查看了之前写过的内容)< / p>
答案 3 :(得分:0)
好奇,看看当你逃脱字符串时它是否有效使用$ this-&gt; db-&gt; escape()
$data = array('adr' => $this->db->escape($address));
$this->db->where('id', $id);
$this->db->update('domains', $data);