您好,匿名用户
随意问技术百科期待您的加入

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

0 投票

我的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变量,有没有好的解决方法呢

用户头像 提问 2012年 12月1日 @ Tryndamere 上等兵 (325 威望)
分享到:

1个回答

0 投票
 
最佳答案

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();
用户头像 回复 2012年 12月1日 @ Vladimir 上等兵 (275 威望)
选中 2012年 12月1日 @Tryndamere
提一个问题:

相关问题

0 投票
1 回复 39 阅读
用户头像 提问 2012年 12月1日 @ Rammus 上等兵 (334 威望)
0 投票
1 回复 38 阅读
用户头像 提问 2012年 12月1日 @ Leona 上等兵 (279 威望)
0 投票
1 回复 51 阅读
用户头像 提问 2012年 12月1日 @ Poppy 上等兵 (395 威望)
0 投票
1 回复 28 阅读
0 投票
1 回复 36 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...