下面是一个失败的示例。 我已经尝试了几种方法将下面的$arrayOfIds转换为id IN(?)的正确语法,但没有运气。 如果我不查询绑定,它可以工作。
注意:我们不使用活动记录。
// 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);
您需要
以不同的方式构建params
数组,并添加与arrayOfIds
大小一样多的问号。
编辑:问号是根据数组大小动态生成的。
$arrayOfIds = array('A0000-000000000001','B0000-000000000001','C0000-000000000001');
$params = array();
array_push($params, 1);
$params = array_merge($params, $arrayOfIds);
$in_string = str_replace(' ', ',', trim(str_repeat("? ", count($arrayOfIds))));
$sql = "SELECT name FROM my_table WHERE status = ? AND id IN (".$in_string.")";
$query = $this->db->query($sql, $params);
$arrayOfIds = array('A0000-000000000001','B0000-000000000001','C0000-000000000001');
$status = 1;
$sql = "SELECT name FROM my_table WHERE status = ? AND id IN ?";
$query = $this->db->query($sql, array($status, $arrayOfIds));