Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich vorbereitete Anweisungen mit Array-Filtern in der MySQL-Klausel „WHERE ... IN()' effizient verwenden?

Wie kann ich vorbereitete Anweisungen mit Array-Filtern in der MySQL-Klausel „WHERE ... IN()' effizient verwenden?

Mary-Kate Olsen
Freigeben: 2024-12-16 16:33:11
Original
758 Leute haben es durchsucht

How Can I Efficiently Use Prepared Statements with Array Filters in MySQL's `WHERE ... IN()` Clause?

Vorbereitete Anweisung mit Array-Filter: Abfrage „WHERE .. IN(..)“

Problem

Betrachten Sie die folgende Abfrage, die zeilenbasiert abruft auf bestimmten IDs:

SELECT * FROM somewhere WHERE `id` IN(1,5,18,25) ORDER BY `name`;
Nach dem Login kopieren

Gegeben ein Array von abzurufenden IDs ($ids), Aus Effizienzgründen wird empfohlen, vorbereitete Anweisungen zu verwenden. Die Verwendung einer Schleife zum Durchlaufen des Arrays und zum separaten Binden jeder ID erfordert jedoch eine anschließende manuelle Sortierung der Ergebnisse.

Lösung

Um diesen Prozess zu vereinfachen und die MySQL-Reihenfolge beizubehalten, gibt es einen alternativen Ansatz:

$ids = array(1,5,18,25);

// Construct a placeholder string containing ?,?,? etc.
$clause = implode(',', array_fill(0, count($ids), '?'));

$stmt = $mysqli->prepare('SELECT * FROM somewhere WHERE `id` IN (' . $clause . ') ORDER BY `name`;');

// Bind all IDs to the placeholder string using call_user_func_array
call_user_func_array(array($stmt, 'bind_param'), $ids);
$stmt->execute();

// Iterate over the results
Nach dem Login kopieren

Diese Methode bindet alle IDs in einem Aufruf an die Platzhalterzeichenfolge, sodass MySQL die Filterung und Sortierung effizient durchführen kann.

Das obige ist der detaillierte Inhalt vonWie kann ich vorbereitete Anweisungen mit Array-Filtern in der MySQL-Klausel „WHERE ... IN()' effizient verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage