2014-04-16 82 views
0

表xyz中有一列abc,其数据类型为int,默认值为null。我们假设表中存在一个特定的行,其中字段abc的值为空。Codeigniter IFNULL in set()mysql activerecord

我希望通过多次运行查询将abc更改为'其先前的值+其他值'。自第一次更新列的值为null以来,问题就出现了。

添加空到什么返回null,所以这不起作用:

$this->db->set('abc', $value);

我试图用这个代替:

$this->db->set('abc', "IFNULL( ABC , 0) + $value");

但是,这会产生:

UPDATE xyz SET abc = 'IFNULL( ABC , 0) + value'

但所需的查询是:

UPDATE XYZ SET ABC = IFNULL( ABC , 0) + value (不含该值的引号进行设置)

才能实现这一目标?

这不起作用或者:

$this->db->set('abc = IFNULL( ABC , 0) + $value');

回答

2

您可以尝试到第三个参数添加到假(转义值)

$this->db->set('abc', 'IFNULL(abc, 0) + $value', FALSE); 

也许

$this->db->set('abc', 'IFNULL(abc, 0) + '.$value.'', FALSE);