【发布时间】:2013-11-14 12:16:36
【问题描述】:
下面是一个失败的例子。我尝试了几种方法将下面的 $arrayOfIds 转换为 id IN (?) 的正确语法,但没有成功。如果我不查询绑定,它可以工作。
注意:我们不使用 Active Record。
// this is actually being passed in as argument
$arrayOfIds = array('A0000-000000000001','B0000-000000000001','C0000-000000000001');
$params = array();
array_push($params,1); // for the status
array_push($params, "'" . implode("','",$arrayOfIds) . "'"); // for the id in
$sql = "SELECT name FROM my_table WHERE status = ? AND id IN (?) ";
$query = $this->db->query($sql,$params);
【问题讨论】:
-
您是否尝试在运行后使用 $this->db->last_query() 转储查询以查看 SQL 的样子?
-
好吧,我想这只是复制到这里的一个错字,但是您使用的是上面的 $arrayOfIds,然后是 $companyEntityIds。让我们至少更正我们的帖子,然后按照 Mathew Daly 所说的运行 $this->db->last_query()
-
所以,您编辑了您的错字,但您没有向我们提供我们需要的有用信息 - 您的查询现在是什么样的?
-
快速跟进转储 last_query 显示错误。 CI 自动转义绑定的查询参数。所以最终得到如下排列: IN ('\'A0000-000000000001,B0000-000000000001,C0000-000000000001'\'') -OR- ('\'A0000-000000000001\',\'B0000-00000000001\', \'C0000-000000000001\'').
标签: php sql codeigniter