Using Arrays in MySQL Prepared Statements for WHERE ... IN(...) Queries
When querying a database using prepared statements, it's recommended to prepare a single statement and execute it multiple times to improve performance. However, when dealing with an array of IDs for a WHERE ... IN(...) query, sorting the results manually after execution can be inefficient.
An alternative approach is to utilize a technique that involves creating a comma-separated list of placeholders (?) based on the array's length. Consider the following example:
$ids = array(1,5,18,25); // Create a string containing ?,?,? $clause = implode(',', array_fill(0, count($ids), '?')); $stmt = $mysqli->prepare('SELECT * FROM somewhere WHERE `id` IN (' . $clause . ') ORDER BY `name`;'); call_user_func_array(array($stmt, 'bind_param'), $ids); $stmt->execute(); // Loop through results
In this approach, implode(...) creates a string with the required number of placeholders. The call_user_func_array(...) function then binds the values from the $ids array to the placeholders. By using this technique, you can sort the results using MySQL's built-in sorting functionality, eliminating the need for manual sorting.
The above is the detailed content of How Can I Efficiently Use Arrays with MySQL Prepared Statements in WHERE ... IN() Clauses?. For more information, please follow other related articles on the PHP Chinese website!