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
Libérer: 2025-01-01 14:06:12
original
620 Les gens l'ont consulté

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);
Copier après la connexion

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);
Copier après la connexion

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);
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal