Heim >Backend-Entwicklung >PHP-Tutorial >Wie verwende ich ein Array mit von MySQLi vorbereiteten Anweisungen in einer „IN()'-Klausel?
So integrieren Sie ein Array in eine von MySQLi vorbereitete Anweisung für eine „IN()“-Abfrage
Beim Ausführen einer MySQL-Abfrage, die eine Filterung beinhaltet Datensätze basierend auf Werten in einem Array mithilfe der WHERE ... IN(...)-Syntax erstellen, wird empfohlen, vorbereitete Anweisungen zu verwenden, um die Sicherheit und Leistung zu verbessern. Die Verwendung vorbereiteter Anweisungen, wie in der Frage gezeigt, erfordert jedoch eine manuelle Sortierung der Ergebnisse.
Um dieses Problem zu beheben, besteht eine bessere Lösung darin, die integrierte IN()-Funktionalität von MySQL innerhalb einer vorbereiteten Anweisung zu nutzen. Dadurch können wir das ID-Array direkt in die Abfrage integrieren.
$ids = array(1,5,18,25); // Construct a comma-separated string of placeholders $clause = implode(',', array_fill(0, count($ids), '?')); // Prepare the statement with the IN() clause $stmt = $mysqli->prepare('SELECT * FROM somewhere WHERE `id` IN (' . $clause . ') ORDER BY `name`;'); // Bind the array of IDs to the placeholders call_user_func_array(array($stmt, 'bind_param'), $ids); $stmt->execute(); // Iterate over the results
Bei diesem Ansatz wird die bind_param-Funktion einmal mit dem gesamten ID-Array aufgerufen und MySQL übernimmt automatisch die Filterung und Reihenfolge die Ergebnisse. Dies stellt eine effizientere und robustere Lösung im Vergleich zur manuellen Sortierung dar.
Das obige ist der detaillierte Inhalt vonWie verwende ich ein Array mit von MySQLi vorbereiteten Anweisungen in einer „IN()'-Klausel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!