Liaison d'un tableau de chaînes dans une clause WHERE IN (?) avec MySQLi
Lorsque vous travaillez avec des instructions préparées MySQLi, il est essentiel de comprendre comment lier un tableau de valeurs à une clause WHERE IN (?). Cet article fournit un guide complet pour résoudre efficacement ce problème.
Le défi
L'objectif est de lier dynamiquement un tableau de noms de villes à une clause WHERE IN dans un Déclaration préparée par MySQLi. Cependant, le code fourni ne parvient pas à s'exécuter initialement en raison d'une liaison incorrecte du tableau.
Liaison d'un tableau de chaînes
Il existe plusieurs approches pour lier un tableau de chaînes. Explorons les méthodes disponibles :
1. Fonction exécuter_query() (PHP 8.2)
La solution la plus simple est disponible en PHP 8.2 avec l'introduction de la fonction exécuter_query(). Cette méthode permet de transmettre à la fois l'instruction SQL et un tableau de valeurs en une seule fois.
$array = ['Nashville', 'Knoxville']; $parameters = str_repeat('?,', count($array) - 1) . '?'; $sql = "SELECT name FROM table WHERE city IN ($parameters)"; $result = $mysqli->execute_query($sql, $array);
2. Tableau dans exécuter() (PHP 8.1)
Dans PHP 8.1, vous pouvez transmettre un tableau directement à la méthode exécuter() sans avoir besoin d'espaces réservés ou de liaison.
$stmt = $mysqli->prepare($sql); $stmt->execute($array);
3. Préparer/lier/exécuter pour les anciennes versions
Pour les versions antérieures à PHP 8.1, les étapes suivantes sont requises :
$types = str_repeat('s', count($array)); $stmt->bind_param($types, ...$array);
Exemple :
$array = ['Nashville', 'Knoxville']; $in = str_repeat('?,', count($array) - 1) . '?'; $sql = "SELECT name FROM table WHERE city IN ($in)"; $stmt = $mysqli->prepare($sql); $stmt->bind_param(str_repeat('s', count($array)), ...$array); $stmt->execute(); $result = $stmt->get_result();
En suivant ces approches, vous pouvez lier efficacement un tableau de chaînes à un WHERE IN (? ) clause dans les instructions préparées MySQLi.
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!