Maison >développement back-end >tutoriel php >Comment utiliser un tableau avec des instructions préparées MySQLi dans une clause `IN()` ?
Comment incorporer un tableau dans une instruction préparée MySQLi pour une requête 'IN()'
Lors de l'exécution d'une requête MySQL impliquant un filtrage enregistrements basés sur les valeurs d'un tableau utilisant la syntaxe WHERE ... IN(...), il est recommandé d'utiliser des instructions préparées pour améliorer la sécurité et les performances. Cependant, l'utilisation d'instructions préparées comme indiqué dans la question nécessite un tri manuel des résultats.
Pour résoudre ce problème, une meilleure solution consiste à utiliser la fonctionnalité IN() intégrée de MySQL dans une instruction préparée. Cela nous permet d'incorporer le tableau d'ID directement dans la requête.
$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
En utilisant cette approche, la fonction bind_param est appelée une fois avec l'ensemble du tableau d'ID, et MySQL gère automatiquement le filtrage et l'ordre des les résultats. Cela offre une solution plus efficace et plus robuste par rapport au tri manuel.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!