When constructing MySQL prepared statements in PHP, the question of how to handle queries with a variable number of arguments arises. For instance, consider a query like this:
SELECT `age`, `name` FROM `people` WHERE id IN (12, 45, 65, 33)
The number of IDs in the IN clause varies with each execution.
Various approaches exist to address this challenge:
Solution 1: Dummy Variables and Multiple Calls
Solution 2: Non-Prepared Query
However, other options offer better efficiency:
Temporary Table Approach
Dynamic IN Clause
For example:
$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);
The first approach may be more efficient for large sets, while the second is suitable for smaller ones.
The above is the detailed content of How to Handle Dynamically Sized Parameter Lists in MySQL Prepared Statements?. For more information, please follow other related articles on the PHP Chinese website!