Tach!
ich als Laie würde so vorgehen:
1.) aktuellen Datensatz auslesen
2.) die per POST hereinkommenden Daten damit abgleichen (wo kein POST-Schlüssel vorhanden und der Datentyp bool, "false" annehmen)
3.) Wertänderungen (nur diese!) in ein UPDATE formulieren und Datensatz in der DB aktualisieren.
Und damit hat man ein potenzielles TOCTTOU-Problem. Zwischen 1. und 3. können parallel laufende Prozesse den Datensatz ändern. Das muss nicht zwangsläufig ein Problem im vorliegenden Anwendungsfall sein. Andererseits, wenn man die Sache noch weiter betrachtet, kann das auch auftreten, wenn Zweitens wegfällt und durch den Input-Hidden-Trick die Daten gleich speicherbar geliefert werden. Erstens war dann ein früherer Request und zwischenzeitliche Änderungen werden durch Drittens auch nicht berücksichtigt. Wenn das aber ein Problem darstellt, muss man sowieso noch ein etwas anderes Geschütz auffahren. Zum Beispiel einen ausreichend fein auflösenden Timestamp mitpflegen, und den bei Erstens abfragen und beim Update vergleichen. Wenn er nicht mehr stimmt, kann das Update keinen Datensatz aktualisieren.
dedlfix.