Mailinglisten-Archive |
Morgen zusammen, Tim schrieb: > Ich meine mich daran erinnern zu können, dass mySQL das immer anmeckert, wenn man in ein Integerfeld eine leere Zeichenkette speichern möchte. > Allerdings kannst Du das Feld zuvor ja manuell setzen: > > if(!isset($_REQUEST["feldname"])) $_REQUEST["feldname"] = 0; Grundsätzlich sollte man besser nicht schreibend auf Superglobals zugreifen: http://programmers.stackexchange.com/questions/76406/directly-modifying-supe rglobals Andernfalls versuch mal festzustellen, ob ein Formularfeld per $_POST richtig übertragen wurde oder ob es irgendwo im Code vielleicht neu definiert/überschrieben wurde. > oder Du führst die SQL Anfrage mit einem führenden @-Zeichen aus: > $query = "INSERT INTO tabelle (feldname) VALUES ('')"; @mysql_query($query); Es geht um ein Integer-Feld, daher sähe die Abfrage ohne gültigen Wert so aus: [CODE] INSERT INTO tabelle (feldname) VALUES () [/CODE] bzw. bei mehreren Feldern: [CODE] INSERT INTO tabelle (feldname1, feldname2) VALUES (123, ) [/CODE] Was in beiden Fällen kein gültiges SQL-Statement ergibt, hier würde also kein Default-Wert verwendet werden, da Spalte explizit angegeben und kein Wert gesetzt. > >um mögliche Fehlerausgaben von mySQL zu unterdrücken. mySQL wird dann automatisch die 0 als Standardwert nutzen. Über den @-Operator kann zwar eine Fehlerausgabe unterdrückt werden, allerdings wird man nie wissen, ob das Statement ausgeführt wurde oder nicht, hier baut man sich also eine potentielle Fehlerquelle in den Code ein und der Fehler würde nicht einmal geloggt werden. Grundsätzlich gilt: Fehlerunterdrückung möglichst ausschließen, stattdessen vernünftige Initialisierung einbauen. In Thomas' Fall würde ich mir erst einmal die Abfrage anschauen, die zusammengebaut wird, im einfachsten Fall über: [CODE] die($query); [/CODE] Anschließend überprüfen, warum fehlende Werte nicht übergeben bzw. initialisiert werden. Gruß und viel Erfolg, Sascha
php::bar PHP Wiki - Listenarchive