Heim >Datenbank >MySQL-Tutorial >Wie verwende ich MySQLi-vorbereitete Anweisungen korrekt mit dem IN-Operator?

Wie verwende ich MySQLi-vorbereitete Anweisungen korrekt mit dem IN-Operator?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-29 14:37:12706Durchsuche

How to Correctly Use MySQLi Prepared Statements with the 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn