Maison >développement back-end >tutoriel php >Comment lier correctement un tableau de chaînes à une instruction préparée par MySQLi ?
Liaison d'un tableau de chaînes avec une instruction préparée mysqi
Lorsque vous travaillez avec MySQL, il est souvent nécessaire de lier un tableau de valeurs à un Clause WHERE IN utilisant une instruction préparée. Bien que cette tâche puisse sembler simple, il existe quelques pièges potentiels qui peuvent conduire à des erreurs.
Dans cet article, nous explorerons l'approche correcte pour lier un tableau de chaînes à l'aide d'instructions préparées par mysqli. Nous fournirons également une explication détaillée des étapes à suivre et discuterons d'une solution potentielle.
Qu'est-ce qui ne va pas ?
L'exemple de code fourni dans la question tente de manière incorrecte de liez un tableau de villes à une instruction préparée à l'aide de bind_param. Cependant, bind_param attend des valeurs scalaires (par exemple, des chaînes, des entiers, etc.) comme arguments. Tenter de lier directement un tableau entraînera une erreur.
L'approche correcte
Pour réussir à lier un tableau de chaînes à une instruction préparée, nous pouvons utiliser ce qui suit étapes :
Exemple de code
Voici un exemple du code correct :
$mysqli = new mysqli("localhost", "root", "root", "db"); if(!$mysqli || $mysqli->connect_errno) { return; } $cities = explode(",", $_GET['cities']); $in = str_repeat('?,', count($cities) - 1) . '?'; $query_str = "SELECT name FROM table WHERE city IN ($in)"; $query_prepared = $mysqli->stmt_init(); if($query_prepared && $query_prepared->prepare($query_str)) { $types = str_repeat('s', count($cities)); $query_prepared->bind_param($types, ...$cities); $query_prepared->execute(); }
Dans ce Par exemple, nous créons d’abord une chaîne d’espaces réservés en utilisant str_repeat. Nous insérons ensuite cette chaîne d'espace réservé dans la requête et préparons l'instruction. Remarquez comment nous lions les éléments individuels du tableau villes en utilisant ...$cities et spécifions le type de données en utilisant str_repeat('s', count($cities)).
En suivant ces étapes, nous pouvons réussir liez un tableau de chaînes à une instruction préparée par mysqli et exécutez la requête comme prévu.
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!