我在我的模型下面的代碼:CodeIgniter的數據庫查詢
$sql = "SELECT t1.*, t2.* FROM Table1 t1 INNER JOIN Table2 t2 ON t1.id = t2.id AND t2.title IN (?) AND t1.type = ? ORDER BY t1.id";
$q = $this->db->query($sql, array($filter, $type));
的問題是,這個查詢工作正常,如果:
$filter = 'a';
但返回咱這:
$filter = "'a','b','c','d'";
因爲我可以看到,CI是逃避$過濾器這樣的第二種情況:
SELECT t1.*, t2.* FROM Table1 t1 INNER JOIN Table2 t2 ON t1.id = t2.id AND t2.title IN ('\'a\',\'b\',\'c\',\'d\'') AND t1.type = ? ORDER BY t1.id
這是正確的行爲。 CI在將它們發送到MySQL之前會轉義引號。你應該使用一個數組作爲過濾器,並構建如下所示: db-> query('... AND t2.title IN(?,?,?,?)...',$ filter); 如果你需要一個完整的代碼,告訴我。 – 2012-08-08 12:59:08