如何在PDO查询中将数组绑定到IN()条件?
大家好!我是PHP和PDO的新手,遇到了一个问题。我有一个用户ID数组,例如:[1, 5, 7, 12]。我需要从users表中选择那些id在这个数组中的用户。在普通SQL中,我会写:
SELECT * FROM users WHERE id IN (1, 5, 7, 12)
但如何通过PDO使用预处理查询来实现?我试过这样:
```php
$ids = [1, 5, 7, 12];
$stmt = $pdo->prepare('SELECT * FROM users WHERE id IN (:ids)');
$stmt->execute([':ids' => $ids]);
```
但这不起作用——PDO报错,说期望标量值而不是数组。我试过用implode并作为字符串传递——也不行,因为这会破坏安全性。
如何正确地将数组绑定到IN()?是否需要动态生成占位符?或者有没有什么PDO的巧妙方法?感谢提供详细回答和示例。
P.S. PHP版本8.1,使用MySQL。
<<>>
问题及其根源
PDO不支持将数组绑定到IN()条件中的单个占位符。