$sql_eintrag = "UPDATE Daten SET
Wert1
='".$_POST['Wert1']."',
Von außen kommende Werte gehören grundsätzlich mit mysql_real_escape_string() maskiert und (normale) Spaltennamen müssen nicht in Akzente oder Anführungszeichen gesetzt werden.
Problem: Wenn ein Formular-Feld leer bleibt, wird in die DB eine "0" geschrieben :-( soll aber einfach leer bleiben.
Du meinst, es soll der Wert NULL rein.
Muß ich mit PHP alles abfragen (wäre ziemlich lästig, weil die Formulare sich über etliche Seiten mit >100 Feldern)
PHP bietet die Möglichkeit, Aufgaben in Funktionen zusammenzufassen. Was also hindert dich an in etwa folgendem:
function sqlwert($a) {
if (strlen($a)) == 0) {
return 'NULL';
}
else {
return '"' . mysql_real_escape_string($a) . '"';
}
}
mysql_query("update tabelle set spalte1=" . sqlwert($_POST["feld1"]) . " where a=b");