Maison >développement back-end >tutoriel php >Comment lier un tableau de chaînes à une clause MySQLi WHERE IN ?
Vous pouvez rencontrer des difficultés lorsque vous tentez de lier un tableau de valeurs à la clause WHERE IN à l'aide MySQLi. Une erreur courante consiste à utiliser incorrectement bind_param. Voici comment résoudre ce problème :
PHP 8.2 a introduit la fonction execute_query(), qui facilite l'exécution d'instructions préparées avec plusieurs valeurs.
Exemple :
$mysqli = new mysqli("localhost", "root", "root", "db"); $array = ['Nashville','Knoxville']; $parameters = str_repeat('?,', count($array) - 1) . '?'; $sql = "SELECT name FROM table WHERE city IN ($parameters)"; $result = $mysqli->execute_query($sql, $array); $data = $result->fetch_all(MYSQLI_ASSOC);
Pour PHP 8.1, vous pouvez passer un tableau directement à execute() :
$mysqli = new mysqli("localhost", "root", "root", "db"); $array = ['Nashville','Knoxville']; $sql = "SELECT name FROM table WHERE city IN (".str_repeat('?,', count($array) - 1) . '?)'; $stmt = $mysqli->prepare($sql); $stmt->execute($array); $result = $stmt->get_result(); $data = $result->fetch_all(MYSQLI_ASSOC);
Pour les anciennes versions, utilisez l'approche suivante :
$mysqli = new mysqli("localhost", "root", "root", "db"); $array = ['Nashville','Knoxville']; $in = str_repeat('?,', count($array) - 1) . '?'; $sql = "SELECT name FROM table WHERE city IN ($in)"; $types = str_repeat('s', count($array)); $stmt = $mysqli->prepare($sql); $stmt->bind_param($types, ...$array); $stmt->execute(); $result = $stmt->get_result(); $data = $result->fetch_all(MYSQLI_ASSOC);
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!