在使用CodeIgniter的Active Record类形成的MySQL UPDATE查询中执行算术运算

时间:2012-12-04 14:51:46

标签: mysql codeigniter activerecord sql-update

我正在使用$this->db->update();创建更新查询,该查询将存储在变量$amount中的值添加到列count中的值。我的函数调用目前看起来像这样:

$data = array('count' => 'count + '.$amount);

$this->db->where('id', $item_id);
$this->db->update('items', $data);

但是,这会生成以下损坏的SQL:

UPDATE `items` SET `count` = 'count + 2' WHERE `id` =  '2'

有没有办法在count + 2附近生成没有引号的SET子句?

2 个答案:

答案 0 :(得分:3)

谢谢,Maxime Morin,让我走上正轨。根据{{​​3}},您可以创建一个" set"通过将可选的$escape参数设置为FALSE,不带引号的子句。因此,我的问题的解决方案是:

$this->db->set("count", "count + $amount", FALSE); 
$this->db->where("id", $item_id);
$this->db->update("items", $data);

答案 1 :(得分:0)

这是我使用的解决方法,直到找到我接受的解决方案

$query = $this->db->query("UPDATE `items` SET `count` = `count` + $amount WHERE `id` = $item_id");