我要問一個類似的問題,只是有一點點不同,但問題是相同的)和Phil Sturgeon's answer確實解決了這個問題。
不過,我意識到的是,你仍然可以使用,可以有引號領域的陣列,這意味着你可以寫:
$this->db->set('received_qty', 'received_qty + 1', FALSE);
$this->db->set('expired_date', 'CURDATE() + INTERVAL 10 DAY', FALSE); //extra example 1
$update['received_date'] = date("Y-m-d");
$update['receiver'] = $receiver_name; //extra example 2
$this->db->where($where);
$this->db->update('vrs_distribution', $update);
凡$this->db->last_query()
將輸出:
UPDATE `vrs_distribution`
SET `received_qty` = received_qty + 1,
`expiry_date` = CURDATE() + INTERVAL 10 DAY, #extra example 1
`received_date` = '2015-07-01 16:00:00',
`receiver` = 'strike_noir', #extra example 2
WHERE #where clause with backticks
請注意,使用set()
的字段沒有引號並出現在第一位。查詢的其餘部分有反引號(讓「CodeIgniter protect the remaining fields」)。
對不起,兄弟,但有,ActiveRecord只是作爲字符串轉義所有輸入,除非另有說明。 – 2010-01-19 14:32:11
一定遲到了,或者我早點擊吧。哎呦。 – Zack 2010-01-22 18:46:30