我能否在PDO查询中将一个数组绑定到IN()条件中?

15 浏览
0 Comments

我能否在PDO查询中将一个数组绑定到IN()条件中?

我很好奇能否使用PDO将值数组绑定到占位符。使用情况是尝试传递一个值数组以用于 IN() 条件。

我希望能够像这样做:


并且让PDO绑定和引用数组中的所有值。

目前我在做:


这确实能够做到,但我想知道是否有一种内置的解决方案我忘记了?

admin 更改状态以发布 2023年5月21日
0
0 Comments

如果需要快速操作:

//$db = new PDO(...);
//$ids = array(...);
$qMarks = str_repeat('?,', count($ids) - 1) . '?';
$sth = $db->prepare("SELECT * FROM myTable WHERE id IN ($qMarks)");
$sth->execute($ids);

0
0 Comments

你需要构建查询字符串。

prepare(
    'SELECT *
     FROM table
     WHERE id IN(' . $inQuery . ')'
);
// bindvalue is 1-indexed, so $k+1
foreach ($ids as $k => $id)
    $stmt->bindValue(($k+1), $id);
$stmt->execute();
?>

chris(注释)和somebodyisintrouble建议foreach循环可能是多余的......

(...)
// bindvalue is 1-indexed, so $k+1
foreach ($ids as $k => $id)
    $stmt->bindValue(($k+1), $id);
$stmt->execute();

... 可以将foreach循环和$stmt->execute替换成......

execute($ids);

0