在 PHP 中构建 MySQL 准备语句时,出现了如何处理参数数量可变的查询的问题。例如,考虑这样的查询:
SELECT `age`, `name` FROM `people` WHERE id IN (12, 45, 65, 33)
IN 子句中的 ID 数量随每次执行而变化。
存在多种方法来解决此挑战:
解决方案 1:虚拟变量和多次调用
解决方案 2:非准备查询
但是,其他选项提供更好的效率:
临时表方法
动态 IN 子句
例如:
$dbh = new PDO(...); $parms = [12, 45, 65, 33]; $inclause = implode(',', array_fill(0, count($parms), '?')); // = ?,?,?,? $preparesql = sprintf('SELECT age, name FROM people WHERE id IN (%s)', $inclause); $st = $dbh->prepare($preparesql); $st->execute($parms);
第一种方法对于大集合可能更有效,而第二种方法是适合较小的。
以上是如何处理 MySQL 准备语句中动态大小的参数列表?的详细内容。更多信息请关注PHP中文网其他相关文章!