Hauptmenü

Untermenü

PHP/MySQL - Fehlersuche - Syntaxfehler

1. Die Abschnitte

2. Vertipper und andere Grausamkeiten

Jetzt stelle ich euch mal den klassischen Fehler vor, der selbst Profis heimsucht. Nämlich den berühmt berüchtigten Parse error. Der wird euch immer dann um die ungewaschenen Ohren gehauen, wenn euer Code nicht den Syntaxregeln von PHP entspricht.

So, bei den Profis sind es meistens nur Tippfehler aber Anfänger schießen immer gerne dieselben Böcke. Darum stelle ich euch mal die Klassiker vor. Ach ja, bei einem korrekten Error Reporting bekommt ihr immer(!) eine Fehlermeldung à la Parse error: parse error in ... on line ... ausgegeben.

3. Das Klammerproblem

Ist sehr beliebt bei Anfängern. Besonders dann, wenn die PHP so in HTML einbetten. Da hilft dann nur eins, Klammern zählen. Egal, ob es sich nun um die normalen oder die geschweiften handelt.


<?php
  // Hier fehlt eine geschweifte Klammer
  while ($row mysql_fetch_assoc ($result)) {
    if ($row['bla'] == irgendwas){
    ...
  }
  // Und hier eine normale
  if (in_array($bla)
?>

4. Das Stringproblem

Auch hier passiert es unseren Neulingen des Öfteren, dass sie was vergessen oder falsch setzen. Erfahrungsgemäß eigentlich immer dann, wenn es um das Thema Zeichenketten oder Arrays geht.


<?php
  // Fehlendes Hochkomma im Index des Arrays
  $blubb['blubb] = 'bla';
  // Fehlerhaftes Anführungszeichen in der Variable $bla
  // hinter "dö", darum wird Hochkomma hinter "jöh" nicht gezeigt
  $blubb = 'Diridi';
  $bla   = 'Holleri didudel dö ".$blubb.' dudel jöh';
?>

5. Das andere Array-Problem

Man glaubt es kaum, aber das sieht man auch des Öfteren. Da weigern sich offenbar einige Anfänger, die assoziativen Indizes eines Arrays in Anführungszeichen oder Hochkommata zu setzen.


<?php
  $bla[blubb] = 'blubber';
?>

Nun, eine Eigenart von PHP ist es, Konstanten als Strings zu behandeln, wenn erstere nicht vorhanden sind. In so einem Fall entspräche also obiger Code einem


<?php
  $bla['blubb'] = 'blubber';
?>

Aber!

Was passiert, wenn man vorher eine Konstante gleichen Namens definiert hätte?


<?php
  define ('blubb''laber');
?>

Dann wird aus einem


<?php
  $bla[blubb] = 'blubber';
?>

in Wirklichkeit ein


<?php
  $bla['laber'] = 'blubber';
?>

Also immer daran denken. Anführungszeichen oder Hochkommata setzen. In eurem eigenen Interesse solltet ihr euch für die letztere Variante entscheiden. Denn dann bekommt ihr weniger Probleme.

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt