将字符串数组绑定到 WHERE IN(?) 子句
将值数组绑定到 WHERE IN(?) 子句是一个常见的 MySQL 任务。当使用 PHP 的 mysqli 准备好的语句时,如果您不熟悉 bind_param() 函数的限制和细微差别,那么实现起来可能会很困难。
问题
尝试使用bind_param()将值数组绑定到IN(?)子句时可能会遇到问题,导致失败
解决方案
完成此任务有不同的方法,具体取决于您使用的 PHP 版本:
PHP 8.2 和上面
PHP 8.1
早期 PHP 版本
对于旧版本,需要更复杂的方法:
示例代码
这是一个使用早期 PHP 版本方法的示例:
$array = ['Nashville', 'Knoxville']; $in = str_repeat('?,', count($array) - 1) . '?'; $sql = "SELECT name FROM table WHERE city IN ($in)"; $stmt = $mysqli->prepare($sql); // prepare $types = str_repeat('s', count($array)); // types $stmt->bind_param($types, ...$array); // bind array at once $stmt->execute(); $result = $stmt->get_result(); $data = $result->fetch_all(MYSQLI_ASSOC);
通过了解这些方法,您可以使用 mysqli 准备好的语句有效地将字符串数组绑定到 WHERE IN(?) 子句,从而确保成功执行您的查询。
以上是如何使用 PHP 的 mysqli 准备语句高效地将字符串数组绑定到 MySQL WHERE IN(?) 子句?的详细内容。更多信息请关注PHP中文网其他相关文章!