Maison > base de données > tutoriel mysql > Comment utiliser correctement l'opérateur IN avec des instructions préparées MySQLi et plusieurs paramètres ?

Comment utiliser correctement l'opérateur IN avec des instructions préparées MySQLi et plusieurs paramètres ?

Linda Hamilton
Libérer: 2024-12-17 17:06:15
original
647 Les gens l'ont consulté

How to Correctly Use the IN Operator with MySQLi Prepared Statements and Multiple Parameters?

Utilisation de l'opérateur IN avec les instructions préparées MySQLi

Lors de l'utilisation de l'opérateur IN avec l'opérateur IN dans les instructions préparées MySQLi, il est crucial de formater correctement les paramètres. Le code initial fourni :

$data_res = $_DB->prepare('SELECT `id`, `name`, `age` FROM `users` WHERE `lastname` IN (?)');
$data_res->bind_param('s', $in_statement);
Copier après la connexion

implique une erreur car $in_statement est une chaîne plutôt qu'un tableau de valeurs. Pour résoudre ce problème, une approche alternative utilisant la fonction call_user_func_array est présentée :

$int = str_repeat('i', $count_params);
array_unshift($arParams, $int);

$q = array_fill(0, $count_params, '?');
$params = implode(',', $q);

$data_res = $_DB->prepare('SELECT `id`, `name`, `age` FROM `users` WHERE `lastname` IN ('.$params.')');
call_user_func_array(array($data_res, 'bind_param'), $arParams);
Copier après la connexion

Dans ce code modifié :

  • $count_params détermine le nombre de paramètres à transmettre.
  • str_repeat('i', $count_params) crée une chaîne de i caractères égale au nombre de paramètres, représentant le type de données pour chaque paramètre.
  • array_unshift($arParams, $int) ajoute la chaîne de type de données au tableau $arParams.
  • array_fill(0, $count_params, '?') génère une chaîne de points d'interrogation pour la clause IN.
  • call_user_func_array est utilisé pour lier plusieurs paramètres simultanément, en passant le tableau $arParams comme argument.

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