2011-01-31 92 views
1

我有以下查詢試圖CI中的更新:笨 - 破滅/查詢綁定造成不必要的字符串

$sql = "UPDATE fanout.manual_data 
       SET call_leader_id = ? 
       WHERE id IN (?)"; 

$q = $this->db->query($sql, array($leaderID, implode(", ", $empIDs))); 

的破滅是建立在我的數組中的所有ID的字符串。然而,就是導致查詢看起來像:

UPDATE fanout.manual_data SET call_leader_id = '55993' WHERE id IN ('57232, 0097726, 0076034'); 

當我需要的是:

UPDATE fanout.manual_data SET call_leader_id = '55993' WHERE id IN (57232, 0097726, 0076034); 

唯一不同的,是周圍的ID字符串的單引號。這是我需要做的事情,並跳過CI的查詢綁定(http://codeigniter.com/user_guide/database/queries.html),或者是CI可以處理的事情,我只是錯過了一步?

謝謝。

+0

嗨@Ryan你能告訴我你是怎麼知道變量是單引號的嗎?有沒有一個PHP函數會輸出已運行的ACTUAL查詢?我有類似的問題,如果我能夠告訴單引號放在我的var周圍,它會幫助我很大。 – Catfish 2011-03-03 23:53:29

回答

1

我不認爲你可以跳過這種行爲。你在技術上傳遞一個字符串,所以CI將它解釋爲它,並用引號括起來。

我認爲你最好手動連接$empIDs(例如使用foreach循環),如果你想確定,就用$this->db->escape()轉義它們。

+0

謝謝,這就是我的想法,但不確定。 – 2011-01-31 20:08:46