首页 > 后端开发 > php教程 > 如何在 IN() 子句中使用带有 MySQLi 准备语句的数组?

如何在 IN() 子句中使用带有 MySQLi 准备语句的数组?

Linda Hamilton
发布: 2024-12-22 06:13:14
原创
989 人浏览过

How to Use an Array with MySQLi Prepared Statements in an `IN()` Clause?

如何将数组合并到“IN()”查询的 MySQLi 准备语句中

执行涉及过滤的 MySQL 查询时使用 WHERE ... IN(...) 语法基于数组中的值进行记录,建议使用准备好的语句来增强安全性和性能。然而,使用问题中所示的准备好的语句需要手动对结果进行排序。

为了解决这个问题,更好的解决方案是在准备好的语句中利用 MySQL 的内置 IN() 功能。这使我们能够将 ID 数组直接合并到查询中。

$ids = array(1,5,18,25);

// Construct a comma-separated string of placeholders
$clause = implode(',', array_fill(0, count($ids), '?'));

// Prepare the statement with the IN() clause
$stmt = $mysqli->prepare('SELECT * FROM somewhere WHERE `id` IN (' . $clause . ') ORDER BY `name`;');

// Bind the array of IDs to the placeholders
call_user_func_array(array($stmt, 'bind_param'), $ids);
$stmt->execute();

// Iterate over the results
登录后复制

通过使用这种方法,bind_param 函数会使用整个 ID 数组调用一次,MySQL 会自动处理 ID 的过滤和排序。结果。与手动排序相比,这提供了更高效、更稳健的解决方案。

以上是如何在 IN() 子句中使用带有 MySQLi 准备语句的数组?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板