Heim >Datenbank >MySQL-Tutorial >Wie verwende ich MySQLi-vorbereitete Anweisungen ordnungsgemäß mit dem IN-Operator?
Vorbereitete MySQLi-Anweisungen mit IN-Operator
Dieser Artikel befasst sich mit dem Problem der Auswahl von Zeilen aus einer Datenbank mithilfe des IN-Operators und vorbereiteter Anweisungen in MySQLi . Der ursprüngliche Code, der vom ursprünglichen Poster bereitgestellt wurde:
$data_res = $_DB->prepare('SELECT `id`, `name`, `age` FROM `users` WHERE `lastname` IN (?)'); $data_res->bind_param('s', $in_statement); $data_res->execute();
Es konnten keine Ergebnisse zurückgegeben werden, obwohl in der Datenbank Daten vorhanden waren.
Die Lösung besteht darin, jeden Parameter manuell per Referenz zu binden:
$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();
Dieser Ansatz ermöglicht die korrekte Ausführung der vorbereiteten Anweisung mit dem IN-Operator und stellt sicher, dass alle mit dem Eingabearray übereinstimmenden Daten von der Datenbank zurückgegeben werden.
Das obige ist der detaillierte Inhalt vonWie verwende ich MySQLi-vorbereitete Anweisungen ordnungsgemäß mit dem IN-Operator?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!