PHP 的 PDO(PHP 数据对象)提供了一种绑定占位符的机制在查询数组中的值时。但是,它本身并不支持将值数组绑定到 IN() 条件。
作为解决方法,您可以通过迭代来手动构造占位符字符串数组并用逗号连接占位符。
$ids = [1, 2, 3, 7, 8, 9]; $in = str_repeat('?,', count($ids) - 1) . '?';
$in 变量将包含一个字符串,例如"?,?,?,?,?,?"。
使用占位符字符串准备查询:
$stmt = $db->prepare("SELECT * FROM table WHERE id IN($in)");
执行查询并将数组作为参数传递:
$stmt->execute($ids);
对于命名占位符,例如 :id0、:id1、:id2 等,您需要手动创建一系列占位符并将值收集到关联数组中。
$i = 0; $in_params = []; foreach ($ids as $item) { $key = ":id" . $i++; $in_params[$key] = $item; $in .= ($in ? ',' : '') . $key; }
虽然 PDO 没有明确允许将数组绑定到 IN() 条件,但您可以通过手动构造占位符字符串或使用带有关联数组的命名占位符来复制功能。这些方法提供了一种在 PDO 查询中处理 IN() 条件中的数组的便捷方法。
以上是如何将数组绑定到 PDO 中的 IN() 子句?的详细内容。更多信息请关注PHP中文网其他相关文章!