Dies würde das gleiche erreichen, aber wahrscheinlich wird nicht viel von einer Geschwindigkeitszunahme ergeben, sieht aber schöner aus.
%Vor% Verwenden Sie die IN-Anweisung. Geben Sie eine kommagetrennte Liste mit Schlüsselwerten ein. Sie können dies leicht mit implode
function tun.
Alternativ können Sie die Bedingung:
verwenden %Vor%oder Unterabfrage:
%Vor%Verwenden Sie join / implode, um eine durch Kommas getrennte Liste mit:
zu erstellen %Vor%Ich habe noch nie einen anderen Weg gesehen als die foreach-Schleife.
Aber wenn $ list in irgendeiner Weise vom Benutzer erhalten wird, sollten Sie die vorbereitete Anweisung verwenden und nur eine Zeile nach der anderen aktualisieren (vorausgesetzt, dass jemand keine Möglichkeit hat, mehrere Zeilen mit einer vorbereiteten Anweisung zu aktualisieren) ). Ansonsten sind Sie offen für SQL-Injektion.
Sie können eine Aktualisierung mit case-Anweisungen durchführen, aber Sie müssen die Abfrage selbst erstellen.
%Vor%Der Platz kann weggelassen werden, aber Sie ersparen sich eine vollständige Tabellenaktualisierung.
Wenn Sie eine Grenze für die Anzahl der Elemente kennen, dann verwenden Sie die "IN" -Klausel, wie andere vorgeschlagen haben:
%Vor% Eine Warnung ist jedoch, dass abhängig von Ihrer Datenbank die Anzahl der Elemente in der Klausel begrenzt sein kann. ZB hatte oracle 7 oder 8 (?) Ein Limit von 256 Items (das wurde in späteren Versionen deutlich erhöht)
Wenn Sie über eine Liste iterieren, verwenden Sie eine Transaktion, sodass Sie einen Rollback durchführen können, wenn eines der Updates fehlschlägt.