Maison >développement back-end >tutoriel php >Comment puis-je utiliser efficacement les instructions préparées avec les filtres de tableau dans la clause « WHERE ... IN() » de MySQL ?
Considérez la requête suivante qui récupère les lignes en fonction sur des identifiants spécifiques :
SELECT * FROM somewhere WHERE `id` IN(1,5,18,25) ORDER BY `name`;
Étant donné un tableau d'identifiants ($ids) à fetch, il est recommandé d'utiliser des instructions préparées pour plus d'efficacité. Cependant, l'utilisation d'une boucle pour parcourir le tableau et lier chaque ID séparément nécessite un tri manuel ultérieur des résultats.
Pour simplifier ce processus et maintenir l'ordre MySQL, une approche alternative existe :
$ids = array(1,5,18,25); // Construct a placeholder string containing ?,?,? etc. $clause = implode(',', array_fill(0, count($ids), '?')); $stmt = $mysqli->prepare('SELECT * FROM somewhere WHERE `id` IN (' . $clause . ') ORDER BY `name`;'); // Bind all IDs to the placeholder string using call_user_func_array call_user_func_array(array($stmt, 'bind_param'), $ids); $stmt->execute(); // Iterate over the results
Cette méthode lie tous les identifiants à la chaîne d'espace réservé en un seul appel, permettant à MySQL d'effectuer le filtrage et le tri efficacement.
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!