Codeigniter IFNULL在set()mysql activerecord中

时间:2014-04-16 09:42:15

标签: mysql codeigniter activerecord

表xyz中有一列abc,其数据类型为int,默认值为null。我们假设表中存在一个特定的行,其中字段abc的值为null。

我希望将abc更改为以前的值+其他一些值'通过多次运行查询。第一次更新列时会出现问题,因为它的值为null。

向任何内容添加null都会返回null,因此这不起作用:

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

我尝试使用此代码:

$this->db->set('abc', "IFNULL( {ABC {1}}

但这会产生:

, 0) + $value");的xyz UPDATE {ABC {1}} {ABC {1}}

但所需的查询是:

SET的xyz = 'IFNULL( {ABC {1}} {ABC {1}} (没有用于设置值的引号)

这可以实现吗?

这不起作用:

, 0) + value' {ABC {1}}

1 个答案:

答案 0 :(得分:2)

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

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

或者

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