使用SET减小列值

时间:2013-07-31 20:58:07

标签: php mysql sql codeigniter

我尝试使用CodeIgniter的数据库类来减少列的值。目前我正在这样做:

public function deduct_limit($bytes, $ip_address) {
    $this->db->where('ip_address', $ip_address);
    $this->db->set('limit', 'limit - ' . $bytes, FALSE);
    $this->db->update('limits');
}

但是,CodeIgniter会抛出此错误消息:

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   接近' limit - 418266480 WHERE ip_address =' 127.0.0.1''在第1行

UPDATE `limits` 
    SET `limit` = limit - 418266480 
WHERE `ip_address` = '127.0.0.1'

据我所知,SQL是正确的,我已经谷歌了,并且看了SO,他们都遵循这种语法。除了+1-1之外的其他任何内容,我都不能使用它吗?

2 个答案:

答案 0 :(得分:2)

您需要使用反引号{/ 1>来reserved words in MySQL转义limit

UPDATE limits
SET `limit` = `limit` - 418266480
WHERE ip_address = '127.0.0.1'

答案 1 :(得分:2)

这可能会对你有所帮助

$this->db->set('limit', 'limit - ' . (int) $bytes, FALSE);