Heim >Datenbank >MySQL-Tutorial >Wie verwende ich MySQLi-vorbereitete Anweisungen mit dem IN-Operator effektiv?
Vorbereitete MySQLi-Anweisungen mit dem IN-Operator
Vorbereitete Anweisungen bieten gegenüber herkömmlichen Abfragen mehr Sicherheit und Leistung, indem sie es Ihnen ermöglichen, Parameterwerte separat anzugeben die Aussage selbst. Wenn Sie jedoch vorbereitete Anweisungen mit dem IN-Operator verwenden, können Probleme auftreten, wenn Ihr Ansatz nicht korrekt ist.
Das Problem
Wie eingangs erwähnt Abfrage führt das Binden einer durch Kommas getrennten Zeichenfolge von Werten an die vorbereitete Anweisung mithilfe von bind_param('s', $in_statement) nicht zu Ergebnissen, obwohl die Daten in der vorbereiteten Anweisung vorhanden sind Datenbank.
Die Lösung
Die Lösung liegt darin, jeden Parameterwert einzeln zu behandeln:
Beispielcode
<?php $lastnames = ['braun', 'piorkowski', 'mason', 'nash']; $arParams = []; 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 = $mysqli->prepare("SELECT `id`, `name`, `age` FROM `users` WHERE `lastname` IN ({$params})"); call_user_func_array([$data_res, 'bind_param'], $arParams); $data_res->execute(); $result = $data_res->get_result(); while ($data = $result->fetch_array(MYSQLI_ASSOC)) { // Your code here... } $result->free(); $data_res->close();
Mit diesem Ansatz können Sie mithilfe des IN-Operators mehrere Werte ordnungsgemäß an die vorbereitete Anweisung binden.
Das obige ist der detaillierte Inhalt vonWie verwende ich MySQLi-vorbereitete Anweisungen mit dem IN-Operator effektiv?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!