【发布时间】:2010-10-29 13:16:48
【问题描述】:
我很想知道是否可以使用 PDO 将值数组绑定到占位符。这里的用例是尝试传递一个值数组以用于IN() 条件。
我希望能够做这样的事情:
<?php
$ids=array(1,2,3,7,8,9);
$db = new PDO(...);
$stmt = $db->prepare(
'SELECT *
FROM table
WHERE id IN(:an_array)'
);
$stmt->bindParam('an_array',$ids);
$stmt->execute();
?>
并让 PDO 绑定并引用数组中的所有值。
目前我正在做:
<?php
$ids = array(1,2,3,7,8,9);
$db = new PDO(...);
foreach($ids as &$val)
$val=$db->quote($val); //iterate through array and quote
$in = implode(',',$ids); //create comma separated list
$stmt = $db->prepare(
'SELECT *
FROM table
WHERE id IN('.$in.')'
);
$stmt->execute();
?>
这确实可以完成这项工作,但只是想知道我是否缺少内置的解决方案?
【问题讨论】:
-
A complete guide on binding an array to an IN() condition,包括查询中有其他占位符的情况
-
问题已作为 this question 的副本关闭。我把重复的标志倒过来了,因为这个问题早了 4 年,有 4 倍的浏览量,3 倍的答案,和 12 倍的分数。这显然是更好的目标。
-
任何在 2020 年看到这个的人:你可以试试github.com/morris/dop。
标签: php arrays pdo prepared-statement where-in