Hey zusammen,
die Administration und Moderation haben in den letzten Tagen und Wochen auch einen Debug-Leitfaden erarbeitet.
Unser aktueller Debug-Leitfaden:
- Du siehst, dass dein Script nicht so funktioniert wie du es dir denkst
- Wenn deine Programmiersprache es zulässt, dann aktiviere die Ausgabe von Fehlermeldungen. In PHP wird dazu ganz oben im Script ini_set('display_errors', 'on'); und error_reporting(-1); eingefügt. Somit ist die Ausgabe von Notizen, Warnungen und Errormeldungen gegeben
- Liegen Notizen, Warnungen oder Errormeldungen vor erkundigst du dich im Internet nach diesen und wie man diese lösen kann. Kannst du diesen Fehler trotzdem nicht beheben, kannst du hier im Forum gerne dein Problem vorstellen.
- Versuche den Codeteil der an dem Fehler schuld sein kann einzugrenzen
- Schaue nach ob in den Variablen auch das richtige, was du erwartest, steht. Dies kannst du mit der Funktion var_dump() erledigen. Dies wiederholst du solange bis dir Unstimmigkeiten in deinem Script auffallen.
- Fallen dir Unstimmigkeiten auf dienen das PHP-Handbuch und weitere Quellen als Ratgeber.
- Kannst du trotz dessen den Fehler nicht beheben, kannst du hier im Forum gerne dein Problem vorstellen
- Wenn alle Fehler behoben sind und das Programm läuft kannst du die Debug-Ausgaben wieder entfernen
Spezieller Fall "MYSQL-Debugging":
-
Mysqli_* :
- Aktiviere die Fehlerausgabe mit der Funktion mysqli_error(); und lass dir die vorhandene Fehlermeldung ausgeben. Falls keine Fehlermeldung vorhanden ist, lass dir die SQL-Query ausgeben und überprüfe ob dort Fehler vorliegen
- Ist eine Fehlermeldung vorhanden, oder du siehst einen Fehler bei der Ausgabe der SQL-Query machst du bei Punkt 3 weiter.
-
PDO :
- Aktiviere die Fehlerausgabe mit der Funktion setAttribute() und den Parametern PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION oder füge in den Datenbankverbindungsaufbau die 2 Parameter als Array hinzu : $dbv = new PDO("mysql:host:localhost;dbname=test;charset=utf8", "username", "password", array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION))
- Ist eine Fehlermeldung vorhanden machst du bei Punkt 3 weiter.
PHP
/*PDO-Debugging Beispiel*/
//Variante 1 (setAttribute):
$dbv = new PDO("mysql:host:localhost;dbname=test;charset=utf8", "username", "password");
$dbv->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//Variante 2 (direkt im Datenbankverbindungsaufbau):
$dbv = new PDO("mysql:host:localhost;dbname=test;charset=utf8", "username", "password", array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));