CodeIgniter查询绑定使用IN子句与字符串数组或字符串列表

时间:2013-11-03 21:17:05

标签: php sql codeigniter

以下是失败的示例。我已经尝试了几种方法将$ 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); 

2 个答案:

答案 0 :(得分:4)

您需要以不同方式构建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);

答案 1 :(得分:1)

...
RequestContext.getCurrentInstance().execute("PF('dlgDelete').show();");