Maison >développement back-end >tutoriel php >Comment utiliser un tableau avec des instructions préparées MySQLi dans une clause `IN()` ?

Comment utiliser un tableau avec des instructions préparées MySQLi dans une clause `IN()` ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-22 06:13:14998parcourir

How to Use an Array with MySQLi Prepared Statements in an `IN()` Clause?

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!

Déclaration:
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