我在我的模型下面的代码: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