Beim Erstellen von MySQL-vorbereiteten Anweisungen in PHP stellt sich die Frage, wie mit Abfragen mit einer variablen Anzahl von Argumenten umgegangen werden soll. Stellen Sie sich zum Beispiel eine Abfrage wie diese vor:
SELECT `age`, `name` FROM `people` WHERE id IN (12, 45, 65, 33)
Die Anzahl der IDs in der IN-Klausel variiert mit jeder Ausführung.
Es gibt verschiedene Lösungsansätze diese Herausforderung:
Lösung 1: Dummy-Variablen und Multiple Aufrufe
Lösung 2: Nicht vorbereitet Abfrage
Andere Optionen bieten jedoch eine bessere Effizienz:
Vorübergehend Tabellenansatz
Dynamisch IN Klausel
Zum Beispiel:
$dbh = new PDO(...); $parms = [12, 45, 65, 33]; $inclause = implode(',', array_fill(0, count($parms), '?')); // = ?,?,?,? $preparesql = sprintf('SELECT age, name FROM people WHERE id IN (%s)', $inclause); $st = $dbh->prepare($preparesql); $st->execute($parms);
Der erste Ansatz kann für große Mengen effizienter sein, während der zweite geeignet ist für kleinere.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit dynamisch dimensionierten Parameterlisten in MySQL-vorbereiteten Anweisungen um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!