PHP/MySQL - Fehlersuche - Falsche Fehler
1. Die Abschnitte
- Überblick
- Fehlertypen
- Error Reporting
- MySQL-Fehler
- Syntaxfehler
- Idiotische Fehler
- Testausgaben
- Falsche Fehler
- Fehler unterdrücken
2. Die Sache mit der Zeilennummern
Ab und zu kommt es vor, dass bei einer Fehlermeldung eine Zeilennummer angegeben wird, in der offensichtlich alles in Ordnung ist. Viele denken jetzt, dass die Fehlermeldung falsch ist. Stimmt aber nicht. Das hat damit zu tun, wie der Code geparst wird. Und in so einem Fall liegt das Problem immer weiter oben im Code. Im Regelfall gibt es zwei Ursachen für die verwirrende Mitteilung.
3. Die Sache mit dem Semikolon
Gehört in PHP (fast) immer hinter jede Zeile, also nicht wie in JavaScript, wo man es schon mal
weglassen kann. Ausnahmen sind Bedingungen, Schleifen oder Funktionen, also alles, wo man mit den geschweiften Klammern
({ ... }
) arbeitet. Wenn man denn nun am Ende einer Zeile besagtes Semikolon vergisst, so verweist die
Fehlermeldung auf die nächste Zeile, die Code enthält.
// In Zeile 11 wird das Semikolon vergessen
// Die Fehlermeldung verweist aber auf Zeile 13
Zeile 11: $bla = 1
Zeile 12:
Zeile 13: echo $bla;
4. Die Sache mit den geschweiften Klammern
Häufig kommt es vor, dass man mit massenhaften Bedingungen und Schleifen arbeiten muss. Da kann es dann schon mal passieren, dass man die ein oder andere geschweifte Klammer vergisst, besonders die schließende. Dies führt dann dazu, dass die Fehlermeldung auf das Ende des fehlerhaften Blocks verweist oder sogar über die Zeilenanzahl unseres Codes hinausgeht.
<?php
if ($blubb == 'bla')
{
if ($dings == 'bumms')
{
...
}
else if ($dings == 'nixbumms')
{
..
}
else
{
while ($dies != $das)
{
if (isset ($irgendwas))
{
for ($i = 0; $i < 10; $i++){
..
}
}
else
{
..
}
}
}
/* Zeile X: hier fehlt die schließende Klammer
der ersten if-Bedingung */
?>
Als Zeilenangabe bekämt ihr nun das X zu sehen. Manchmal wird auch ein Fehler in Zeile 215 angemosert, obwohl die davor so aussehen.
Zeile 212: ?>
Zeile 213: </body>
Zeile 214: </html>
Zeile 215:
Auch in so einem Fall stimmt etwas nicht mit den geschweiften Klammern. Mein Ratschlag euch. Gewöhnt euch den so genannten Allmann-Style an. Oder benutzt einen Editor oder eine IDE, wo es das so genannte Code-Folding gibt.
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt