Hauptmenü

Untermenü

PHP/MySQL - Fehlersuche - Falsche Fehler

1. Die Abschnitte

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