Das klingt – vorausgesetzt du verwendest MySQL/MariaDB[^1] und auf den IDs liegt ein Unique-Index o.ä. – nach einem Fall für INSERT … ON DUPLICATE KEY, etwa so:
INSERT INTO tabelle (id, value) VALUES (:id, :value) as new ON DUPLICATE KEY UPDATE value = new.value;
Ja, MariaDB wird verwendet.
Vielen Dank, das funktioniert so tatsächlich. Aber das as new
und dann value = new.value
will er irgendwie nicht schlucken. Liegt vielleicht daran, dass ich mit bindValue arbeite, aber wenn ich ganz normal value = :value am Ende als Syntax habe, geht der Befehl.
Dein doppeltes foreach brauchst du dann natürlich nicht und :id/:value sind Platzhalter für prepared Statements. Zu klären wäre natürlich noch was passieren soll wenn ein Wert 0 ist (dann müsste der Datensatz ggf. gelöscht werden).
Mich würde dennoch interessieren, ob und wie man das auch mit PHP-Schleifen bewerkstelligen könnte. Aber ich konnte mir einfach keine abstrakte Logik dazu ausdenken, die funktioniert.
Gruß
Boris