CodeIgniter 3如果要用db helper來組合字串的話,遇到sql中有函數或是需要運算的話,就得使用set函數
否則預設會把該函數變成「字串」。
舉例:
update table set st=1, startDT=now(), cnt=cnt+1, dueDT=date_add(now(),interval 30 day where sn=123;
在 set 的函數中要代入第三個變數 false,db helper就會忽略檢查,直接變成函數處理。
$row= array( 'st' => 1 ); $this->db->set('startDT', 'now()', false); $this->db->set('cnt', 'cnt+1', false); $this->db->set('dueDT', "date_add(now(),interval 30 day)", false); $ok= $this->db->where('sn',123)->limit(1)->update('table', $row);
第7行指定limit(1)是為了確保寫錯SQL只會影響1行。