Hi!
Nein, so unübersichtlich muss man das nicht machen. Nimm am besten sprintf() zum Zusammenbauen der Query (wenn du keine Prepared Statements verwenden willst/kannst).
$sql = sprintf("UPDATE ... SET wert='%s' WHERE ...", escape_funktion_für_dein_dbms($_POST['wert_input'][$update_id]));
Puh. Sieht für mich auf den ersten Blick noch komplizierter aus, wie meine Query. Nicht bei dieser Query, aber bei anderen mit Joins und so??
Nun, du bekommst das gesamte Gebilde funktional nicht weniger komplex hin. Aber leg mal dein Augenmerk auf die Query. Sie ist in einem Stück notiert, nicht von PHP-Syntax unterbrochen und enthält auch keine Maskierzeichen. Sie hat lediglich einen Platzhalter eingebaut. Für mich ist sie deshalb sehr gut lesbar, besser als das Rein-Raus, bei dem zwischen den Werten kleine Stücken String stehen, die PHP- und SQL-Syntax sind. Da muss man genau hinsehen, was welche Sprache ist. Gerade wenn die Querys an sich komplexer werden und auch noch eine Anzahl Parameter eingefügt werden sollen, ist es von Vorteil, wenn sie selbst gut erfassbar notiert werden kann. Die sprintf-Geschichte hat lediglich den einen Nachteil, dass man die Zuordnung zwischen Platzhalter und Wert im Auge behalten muss. Aber auch hier kann man sich zur Not etwas Erleichterung schaffen:
$sql = sprintf("... '%1$s', %2$s, '%3$s', ...",
mysql_real_escape_string($string), // 1
intval($zahl), // 2
mysql_real_escape_string($nocheiner)); // 3
Lo!