0

我只是想知道,有没有办法使用 PDO bindValue 选择不在数组中的数据。我的主要目的是防止 SQL 注入。

我的查询是这样的:

$array_name = array('George', 'Bob', 'Stephanie', 'Erica');

$query = $PDO -> prepare("SELECT id FROM table WHERE name NOT IN (:array_name)")
$query->bindValue(':array_name', implode(",",$array_name), PDO::PARAM_STR);

我已经尝试了上面的代码,但它不起作用。

4

1 回答 1

1

PDO 不支持绑定这样的数组,但您可以做的是在字符串中动态创建占位符:

$placeholderStr = str_repeat('?, ', count($array_name)-1) . '?';
$query = $PDO -> prepare("SELECT id FROM table WHERE name NOT IN ($placeholderStr)");
$query->execute($array_name);

或者,您可以使用内置此功能的库,例如Doctrine2 DBAL

于 2014-03-28T16:44:06.807 回答