首页 > 开发 > php > 正文

PDO如何绑定IN()语句的array变量

2017-09-06 15:07:14  来源:网友分享

我的sql语句中有IN的条件,在我的想象中可以这样写代码

$ids = array(2344, 5523, 9332);$st = $pdo->prepare('SELECT * FROM table_name WHERE id IN (:id)');$st->bindParam('id', $ids);$st->execute();

但这样执行pdo会报错,无法绑定一个array变量,有没有好的解决方法呢

解决方案

PDO不支持绑定数组。
要么别用绑定了,

$ids = array(2344, 5523, 9332);// 过滤ids略$in = implode(',',$ids); $st = $pdo->prepare('SELECT * FROM table_name WHERE id IN ('.$in.')');$st->execute();

如果你坚持用绑定或许只能这样

$ids = array(2344, 5523, 9332);// 自动构造多个?号略$st = $pdo->prepare('SELECT * FROM table_name WHERE id IN (?,?,?)');foreach ($ids as $k => $id)    $st->bindValue(($k+1), $id);$st->execute();