PHP Coding Standard |
Man sollte sich von Anfang an auf mögliche Fehler im eigenen Skript vorbereiten und sich darauf vorbereiten.
$update_user_login = "UPDATE user SET Password = PASSWORD('do_not_share') WHERE User = 'mysql_user'"; mysql_query($update_user_login);
Neben der Tatsache, dass der String nicht mit Hochkommata definiert wurde, fehlt für den Befehl mysql_query jegliche Debug-Ausgabe. Steht Wert display_errors auf "off", wird kein Fehler ausgegeben, obwohl der UPDATE möglicherweise fehlschlägt. Diese Einstellung wird oft auf Produktionsservern verwendet. Zum Beispiel installiert Strato einen PHP-Webserver mit "display_errors=off".
$important_value = true_or_false(); // returns TRUE or FALSE echo '>' . $important_value . '<'; // DEBUG output: ">1<" or "><" $update_user_login = 'UPDATE user SET Password = PASSWORD("do_not_share") WHERE User = "mysql_user"'; mysql_query($update_user_login) or die('Error on UPDATE:<br>' . mysql_error() . '<br> Query: <pre>' . $update_user_login . '</pre>');
FALSE ist nicht identisch mit 0. Deswegen sollte für FALSE oder Variablen, die möglicherweise nicht definiert sind, immer die Ausgabe auch "><" enthalten, um Verwirrung schon im Vorfeld zu vermeiden.
Das Update-Statement wird jetzt nicht mehr geparst, weil es in Hochkommata steht. Auch wenn "display_errors=off" gesetzt sein sollte, wird jetzt eine Fehlermeldung mit die ausgegeben. Die Debug-Ausgabe enthält den MySQL-Fehler und das komplette SQL-Statement. Das ist besonders dann praktisch, wenn das SQL-Statement viele Variablen enthält. Der PRE-Tag ist vor allem bei längeren SQL-Anweisungen hilfreich, die sich über mehrere Zeilen erstrecken.