phpbar.de logo

Mailinglisten-Archive

[php] Variablenüberprüfung auf PHP unter Windows

[php] Variablenüberprüfung auf PHP unter Windows

Sascha Meyer harlequin2 at gmx.de
Mi Mär 20 10:37:22 CET 2013


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





More information about the php mailing list

php::bar PHP Wiki   -   Listenarchive