Maison >développement back-end >tutoriel php >Comment lier un tableau de chaînes à une clause MySQLi WHERE IN ?

Comment lier un tableau de chaînes à une clause MySQLi WHERE IN ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-01 14:06:12575parcourir

How to Bind an Array of Strings to a MySQLi WHERE IN Clause?

Liaison d'un tableau de chaînes dans une clause WHERE IN à l'aide d'instructions préparées MySQLi

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 et versions ultérieures : Execute_query()

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);

PHP 8.1 : Array into perform()

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);

Anciennes versions de PHP : Préparer/Bind/Execute

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!

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