使用 PDO 绑定 WHERE IN 子句的参数
使用 PDO 执行带有 WHERE IN 子句的查询时,参数绑定可能不起作用正如预期的那样。如提供的代码片段所示,将逗号分隔的值列表绑定到 :ids 参数会导致计数为 1,尽管数组中有多个值。
说明
问题在于 IN 子句期望值的格式如何。绑定数组时,PHP 将所有元素组合成一个字符串,该字符串被数据库视为一个参数。这会导致执行以下查询:
SELECT foo FROM bar WHERE ids IN ('1,2,3')
但是,IN 子句要求每个值都是单独的参数:
SELECT foo FROM bar WHERE ids IN (1, 2, 3)
解决方案
要解决此问题,必须手动将 IN 列表插入查询字符串中:
'SELECT foo FROM bar WHERE ids IN (' . $myArray .')'
或者,可以使用 bindParam 方法绑定单个值而不是数组。
以上是如何使用 PDO 正确绑定 WHERE IN 子句的参数?的详细内容。更多信息请关注PHP中文网其他相关文章!