Heim >Backend-Entwicklung >PHP-Tutorial >Wie verwende ich ein Array mit von MySQLi vorbereiteten Anweisungen in einer „IN()'-Klausel?

Wie verwende ich ein Array mit von MySQLi vorbereiteten Anweisungen in einer „IN()'-Klausel?

Linda Hamilton
Linda HamiltonOriginal
2024-12-22 06:13:141000Durchsuche

How to Use an Array with MySQLi Prepared Statements in an `IN()` Clause?

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!

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