使用 MySQLi 在 WHERE IN (?) 子句中绑定字符串数组
使用 MySQLi 准备好的语句时,必须理解如何将值数组绑定到 WHERE IN (?) 子句。本文提供了有效解决此问题的全面指南。
挑战
目标是将城市名称数组动态绑定到 WHERE IN 子句中MySQLi 准备好的语句。但是,由于数组绑定不正确,提供的代码最初无法执行。
绑定字符串数组
存在多种绑定字符串数组的方法。让我们探索可用的方法:
1。 execute_query() 函数 (PHP 8.2)
PHP 8.2 中引入了execute_query() 函数,提供了最简单的解决方案。此方法允许一次性传递 SQL 语句和要绑定的值数组。
$array = ['Nashville', 'Knoxville']; $parameters = str_repeat('?,', count($array) - 1) . '?'; $sql = "SELECT name FROM table WHERE city IN ($parameters)"; $result = $mysqli->execute_query($sql, $array);
2.数组传入execute() (PHP 8.1)
在 PHP 8.1 中,您可以将数组直接传递给execute() 方法,无需占位符或绑定。
$stmt = $mysqli->prepare($sql); $stmt->execute($array);
3.旧版本的准备/绑定/执行
对于 PHP 8.1 之前的版本,需要执行以下步骤:
$types = str_repeat('s', count($array)); $stmt->bind_param($types, ...$array);
示例:
$array = ['Nashville', 'Knoxville']; $in = str_repeat('?,', count($array) - 1) . '?'; $sql = "SELECT name FROM table WHERE city IN ($in)"; $stmt = $mysqli->prepare($sql); $stmt->bind_param(str_repeat('s', count($array)), ...$array); $stmt->execute(); $result = $stmt->get_result();
通过遵循这些方法,您可以有效地将字符串数组绑定到 WHERE IN (? MySQLi 准备好的语句中的 ) 子句。
以上是如何将字符串数组绑定到 MySQLi WHERE IN (?) 子句?的详细内容。更多信息请关注PHP中文网其他相关文章!