SELECT不使用PDO bindValue检索数据

时间:2014-03-28 16:33:28

标签: php arrays pdo implode bindvalue

我只是想知道,有没有办法使用PDO bindValue选择NOT IN数组的数据。 我的主要目的是防止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);

我已经尝试过上面的代码,但它无效。

1 个答案:

答案 0 :(得分: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