Maison > base de données > tutoriel mysql > Comment utiliser correctement les instructions préparées par MySQLi avec l'opérateur IN ?

Comment utiliser correctement les instructions préparées par MySQLi avec l'opérateur IN ?

Mary-Kate Olsen
Libérer: 2024-12-17 11:00:25
original
818 Les gens l'ont consulté

How to Properly Use MySQLi Prepared Statements with the IN Operator?

Instructions préparées MySQL avec l'opérateur IN

Cet article aborde le problème de la sélection de lignes dans une base de données à l'aide de l'opérateur IN et des instructions préparées dans MySQLi . Le code initial fourni par l'affiche originale :

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

n'a renvoyé aucun résultat, malgré les données existantes dans la base de données.

La solution consiste à lier manuellement chaque paramètre par référence :

$lastnames = array('braun', 'piorkowski', 'mason', 'nash');
$arParams = array();

foreach($lastnames as $key => $value)
    $arParams[] = &$lastnames[$key];

$count_params = count($arParams);

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

Cette approche permet l'exécution correcte de l'instruction préparée avec l'opérateur IN, garantissant que toutes les données correspondant au tableau d'entrée sont renvoyées par la base de données.

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