Knork: Keine "0" in MySQL schreiben

Beitrag lesen

$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");