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
Mary-Kate Olsenoriginal
2024-12-17 11:00:25906parcourir

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

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

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!

Déclaration:
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