【发布时间】:2012-06-04 05:43:40
【问题描述】:
好吧,这真的很困扰我。如何在 PHP 的 PDO 中为 SQL“IN”语句绑定参数(具有多个值)?
这里是基础知识...
$allow = "'red', 'blue'";
SELECT * FROM colors WHERE type IN (:allow);
$stmt->bindParam(':allow', $allow);
当我自己插入 $allow 时,这可以正常工作,但是当尝试绑定它并使用 :allow 时,它无法工作。有谁知道这是为什么?
注意:我确实正确设置了 PDO 的其余部分,并且其他变量(不是字符串)正常工作,我只是没有包含它,因为它是不必要的。
感谢您的帮助,谢谢。
【问题讨论】:
-
见PHP PDO: Can I bind an array to an IN() condition?。您必须单独绑定每个值,否则数据库将尝试匹配字符串“'red','blue'”,而不是两个字符串“red”和“blue”。
-
这就是为什么那些声称参数化查询是所有 live 问题的解决方案的人悄悄溜进黑暗的原因......