2014-04-16 84 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);