Heim >Datenbank >MySQL-Tutorial >Wie verwende ich MySQLi-vorbereitete Anweisungen korrekt mit dem IN-Operator?
MySQLi Prepared Statements mit dem IN-Operator
Bei Datenbankabfragen können Sie mit dem IN-Operator nach bestimmten Werten innerhalb einer Liste suchen. Bei der Verwendung von MySQLi-vorbereiteten Anweisungen mit dem IN-Operator ist es wichtig, die richtige Syntax einzuhalten, um genaue Ergebnisse zu gewährleisten.
In Ihrem bereitgestellten Code stoßen Sie auf ein Problem, bei dem die Abfrage trotz vorhandener Übereinstimmung keine Ergebnisse zurückgibt Daten in der Datenbank. Dies ist wahrscheinlich auf einen Fehler im Vorbereitungsschritt zurückzuführen.
Die Lösung besteht, wie Sie herausgefunden haben, darin, jeden Parameter explizit als Referenz mit der Funktion call_user_func_array() zu übergeben. Dies liegt daran, dass die Methode bind_param() erwartet, dass Parameter direkt als Wert übergeben werden.
Durch die Übergabe von Parametern als Referenz ruft MySQLi die Werte genau ab und führt die Abfrage korrekt aus. Hier ist ein Beispiel für den geänderten Code:
$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();
Durch diese Änderung wird die vorbereitete Anweisung wie erwartet ausgeführt und gibt die gewünschten Ergebnisse zurück.
Das obige ist der detaillierte Inhalt vonWie verwende ich MySQLi-vorbereitete Anweisungen korrekt mit dem IN-Operator?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!