Maison > développement back-end > tutoriel php > Comment puis-je utiliser efficacement des tableaux avec des instructions préparées MySQL dans les clauses WHERE ... IN() ?

Comment puis-je utiliser efficacement des tableaux avec des instructions préparées MySQL dans les clauses WHERE ... IN() ?

Mary-Kate Olsen
Libérer: 2024-12-29 04:06:13
original
196 Les gens l'ont consulté

How Can I Efficiently Use Arrays with MySQL Prepared Statements in WHERE ... IN() Clauses?

Utilisation de tableaux dans les instructions préparées MySQL pour les requêtes WHERE ... IN(...)

Lors de l'interrogation d'une base de données à l'aide d'instructions préparées, il est recommandé de préparer une seule instruction et de l'exécuter plusieurs fois pour améliorer les performances. Cependant, lorsqu'il s'agit d'un tableau d'ID pour une requête WHERE ... IN(...), le tri manuel des résultats après l'exécution peut s'avérer inefficace.

Une approche alternative consiste à utiliser une technique qui implique la création une liste d'espaces réservés (?) séparés par des virgules en fonction de la longueur du tableau. Prenons l'exemple suivant :

$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
Copier après la connexion

Dans cette approche, implode(...) crée une chaîne avec le nombre requis d'espaces réservés. La fonction call_user_func_array(...) lie ensuite les valeurs du tableau $ids aux espaces réservés. En utilisant cette technique, vous pouvez trier les résultats à l'aide de la fonctionnalité de tri intégrée de MySQL, éliminant ainsi le besoin d'un 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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal