borisbaer: Datenbank-Werte mit übergebenen Form-Werten vergleichen

Beitrag lesen

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