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 (?) ?

Mary-Kate Olsen
Libérer: 2024-12-25 22:05:13
original
366 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 (?) 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);
Copier après la connexion

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

3. Préparer/lier/exécuter pour les anciennes versions

Pour les versions antérieures à PHP 8.1, les étapes suivantes sont requises :

  • Créer une chaîne d'espaces réservés (par exemple, " ?, ?" pour un tableau de deux valeurs).
  • Ajoutez cette chaîne au requête.
  • Préparez l'instruction.
  • Créez une chaîne de types (par exemple, "ss" pour deux valeurs de chaîne).
  • Liez les valeurs du tableau à l'aide de l'argument unpacking opérateur.
$types = str_repeat('s', count($array));
$stmt->bind_param($types, ...$array);
Copier après la connexion

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

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!

source:php.cn
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