适用于PDO和MySQL IN / NOT IN查询的格式

时间:2011-08-15 07:31:18

标签: php mysql pdo

由于显而易见的原因,这是谋杀... ...

我如何在PDO中执行此操作:

SELECT thing FROM things WHERE thing_uid IN ( ... )

我的特定用例是一个字符串,它是通过爆炸从一个带有几十个复选框的表单中取出的数组构建的。在标准MySQL中,这很容易......

$thingString = implode("', '", $thingArray);
$q = "SELECT thing FROM things WHERE thing_uid IN ('$thingString')";

但是我想要从PDO的反注射保护中获益......限制了所有这些。那我怎么能这样做呢?

1 个答案:

答案 0 :(得分:6)

创建一个尽可能多的?数组,并将其放入查询中。

$placeholders = array_fill(0, count($thingArray), '?');
$sql = "SELECT thing FROM things WHERE thing_uid IN (" . implode(',', $placeholders) . ")";