Yadgar: MySQL: Leerstrings werden nicht zu NULL

Beitrag lesen

Hi(gh)!

Folgendes Problem: in der gegenwärtig von mir per Eingabeformular bearbeiteten MySQL-Datenbanktabelle ist in den meisten Feldern NULL als Defaultwert (falls nichts anderes eingegeben wird) vorgesehen. Merkwürdigerweise werden Leerstrings in $_POST nur bei Feldern vom Typ VARCHAR dort als NULL eingetragen, bei Feldern numerischer Typen dagegen als 0 bzw. 0.0 interpretiert (ich überprüfe meine Eingaben mit PHPMyAdmin).

Der relevante Code sieht so aus (exemplarisch für das Feld "Tiefe"):

      if ($_POST['Tiefe'] == "")  
        $Tiefe = NULL;  
      else  
        $Tiefe = $_POST['Tiefe'];  
  
[...]  
  
        $query = 'INSERT INTO orgeln (Hersteller, Marke, Modell, Typ, Markteinfuehrung, Ende_Produktion, Neupreis, Waehrung, Breite_cm, Hoehe_cm, Tiefe_cm, Gewicht_kg, Klappbar, Zerlegbar, Gehaeuseform, Registerspeicher, Einfingerakkorde, Rhythmische_Akkorde, Akkordspeicher, Automatikbass, Arpeggio, Zugriegel, Kniehebel, Portamentomanual, Anzahl_Schweller, Beleuchtung, Abdeckung, Gesamtleistung_Watt, Massenspeicher, Voll_erfasst) VALUES ("'.mysql_real_escape_string($herstellerID).'","'.mysql_real_escape_string($markenID).'","'.mysql_real_escape_string($_POST['Modell']).'", "'.mysql_real_escape_string($typID).'","'.mysql_real_escape_string($Markteinfuehrung).'", "'.mysql_real_escape_string($EndeProduktion).'","'.mysql_real_escape_string($Neupreis).'", "'.mysql_real_escape_string($Waehrung).'", "'.mysql_real_escape_string($Breite).'","'.mysql_real_escape_string($Hoehe).'", "'.mysql_real_escape_string($Tiefe).'","'.mysql_real_escape_string($Gewicht).'","'.mysql_real_escape_string($klappbar).'", "'.mysql_real_escape_string($zerlegbar).'","'.mysql_real_escape_string($gehaeuseformenID).'", "'.mysql_real_escape_string($Registerspeicher).'","'.mysql_real_escape_string($Einfingerakkorde).'", "'.mysql_real_escape_string($RhythmischeAkkorde).'","'.mysql_real_escape_string($Akkordspeicher).'", "'.mysql_real_escape_string($Automatikbass).'","'.mysql_real_escape_string($Arpeggio).'", "'.mysql_real_escape_string($Zugriegel).'","'.mysql_real_escape_string($Kniehebel).'", "'.mysql_real_escape_string($Portamentomanual).'","'.mysql_real_escape_string($Schweller).'", "'.mysql_real_escape_string($Beleuchtung).'","'.mysql_real_escape_string($Abdeckung).'", "'.mysql_real_escape_string($Gesamtleistung).'","'.mysql_real_escape_string($Massenspeicher).'", "'.mysql_real_escape_string($komplett).'")';  

Woran liegt das? Den in den Query-String eingefügten Variablen wurde laut var_dump() tatsächlich der Wert NULL zugewiesen... könnte es etwas mit real_escape_string() zu tun haben?

Bis bald im Khyberspace!

Yadgar