Verwenden von Arrays in MySQL-vorbereiteten Anweisungen für WHERE ... IN(...)-Abfragen
Beim Abfragen einer Datenbank mithilfe vorbereiteter Anweisungen Es wird empfohlen, eine einzelne Anweisung vorzubereiten und mehrmals auszuführen, um die Leistung zu verbessern. Wenn es jedoch um ein Array von IDs für eine WHERE ... IN(...)-Abfrage geht, kann das manuelle Sortieren der Ergebnisse nach der Ausführung ineffizient sein.
Ein alternativer Ansatz besteht darin, eine Technik zu verwenden, die das Erstellen umfasst eine durch Kommas getrennte Liste von Platzhaltern (?), basierend auf der Länge des Arrays. Betrachten Sie das folgende Beispiel:
$ids = array(1,5,18,25); // Create a string containing ?,?,? $clause = implode(',', array_fill(0, count($ids), '?')); $stmt = $mysqli->prepare('SELECT * FROM somewhere WHERE `id` IN (' . $clause . ') ORDER BY `name`;'); call_user_func_array(array($stmt, 'bind_param'), $ids); $stmt->execute(); // Loop through results
Bei diesem Ansatz erstellt implode(...) eine Zeichenfolge mit der erforderlichen Anzahl von Platzhaltern. Die Funktion call_user_func_array(...) bindet dann die Werte aus dem $ids-Array an die Platzhalter. Mit dieser Technik können Sie die Ergebnisse mithilfe der integrierten Sortierfunktion von MySQL sortieren, sodass keine manuelle Sortierung erforderlich ist.
Das obige ist der detaillierte Inhalt vonWie kann ich Arrays mit MySQL-vorbereiteten Anweisungen in WHERE ... IN()-Klauseln effizient verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!