Avatar ·

如何在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()条件中的单个占位符。