Maison >développement back-end >tutoriel php >Comment lier efficacement un tableau de chaînes à la clause IN d'une instruction préparée MySQLi ?
Liaison d'un tableau de chaînes dans des instructions préparées par MySQLi pour une clause IN
Dans le domaine des interactions avec les bases de données, il peut y avoir des situations où vous nécessite de lier un tableau de valeurs de chaîne à la clause WHERE IN (?) dans une instruction préparée par MySQLi. Cet article approfondit les principes sous-jacents et propose des solutions élégantes, en se concentrant particulièrement sur les versions PHP 8.2, 8.1 et antérieures.
PHP 8.2 : une approche simplifiée
Le La fonction execute_query(), introduite dans PHP 8.2, rationalise le processus d'exécution d'instructions préparées avec des tableaux remplis de données. Par exemple :
$sql = "SELECT name FROM table WHERE city IN (?,?)"; $array = ["Nashville", "Knoxville"]; $result = $mysqli->execute_query($sql, $array);
Pour les cas impliquant un nombre d'espaces réservés dynamiques, vous pouvez utiliser str_repeat() pour construire les espaces réservés de manière dynamique :
$array = ["Nashville", "Knoxville"]; $parameters = str_repeat("?,", count($array) - 1) . "?"; $sql = "SELECT name FROM table WHERE city IN ($parameters)"; $result = $mysqli->execute_query($sql, $array);
PHP 8.1 : exécution directe de tableau
Dans PHP 8.1 et supérieur, vous pouvez exécuter directement une instruction préparée avec un tableau, en supprimant la nécessité d'une liaison explicite :
$sql = "SELECT name FROM table WHERE city IN (?,?)"; $stmt = $mysqli->prepare($sql); $stmt->execute(["Nashville", "Knoxville"]); $result = $stmt->get_result();
Versions antérieures : adopter la complexité
Pour les versions antérieures à PHP 8.1, la procédure est un peu plus complexe :
Exemple :
$array = ["Nashville", "Knoxville"]; $in = str_repeat("?,", count($array) - 1) . "?"; $sql = "SELECT name FROM table WHERE city IN ($in)"; $stmt = $mysqli->prepare($sql); $types = str_repeat("s", count($array)); $stmt->bind_param($types, ...$array); $stmt->execute(); $result = $stmt->get_result();
Bien que légèrement plus verbeux, ce code propose une solution concise par rapport aux approches alternatives.
En conclusion, lier un tableau de chaînes à une clause IN dans MySQLi préparé Les instructions impliquent plusieurs méthodes adaptées aux différentes versions de PHP. En tirant parti des techniques décrites dans cet article, vous pouvez exécuter efficacement ces requêtes dans vos interactions de base de données.
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!