3

下面是一个失败的例子。我尝试了几种方法将下面的 $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); 
4

2 回答 2

5

您需要以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);
于 2013-11-04T01:14:38.807 回答
1
$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));
于 2017-01-05T14:40:26.220 回答