如何将数组合并到“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中文网其他相关文章!