PHP/MySQL - Fehlersuche - Syntaxfehler
1. Die Abschnitte
- Überblick
- Fehlertypen
- Error Reporting
- MySQL-Fehler
- Syntaxfehler
- Idiotische Fehler
- Testausgaben
- Falsche Fehler
- Fehler unterdrücken
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