CodeIgniter Active Record,基本更新给出错误

时间:2010-09-14 22:07:47

标签: mysql codeigniter

我是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会创建这个错误的查询?

4 个答案:

答案 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);