Hauptmenü

Untermenü

PHP/MySQL - PHP/MySQL Grundlagen - Fehler

1. Die Abschnitte

2. Bockmist

Auch wenn ich schon hier eine kleine Einführung zum Thema Fehler gegeben habe, so wollen wir uns hier etwas mehr mit den Details beschäftigen. Auch wenn die Möglichkeiten ein wenig begrenzt sind. Also machen wir jetzt etwas, das ich in der Überschrift schon genauer spezifiziert habe, nämlich eine fehlerhafte Abfrage á la INSERT INTO produkt VALUES (6, 'bla', 20, '1000-6',6;. Das geübte Auge sieht natürlich sofort, dass eine schließende Klammer fehlt. Darum sagt MySQL auch lapidar:


ERROR 1064 (42000): You have an error in your SQL syntaxcheck the manual that corresponds to your MySQL server version
for the right syntax to use near '' at line 1

Und bei mir piept der Rechner dann auch noch.

Ein anderes Beispiel

Die Abfrage INSERT INTO produkt VALUES (6, 'bla', 20, '1000-6'); produziert die folgende Fehlermeldung


ERROR 1136 (21S01): Column count doesn´t match value count at row 1

weil die Anzahl der Spalten im VALUE-Bereich nicht mit der tatsächlichen übereinstimmt.

3. Die Fehlermeldung

... besteht aus drei Teilen. Da hätten wir zunächst einen MySQL-internen Fehlercode mit der Nummer 1064 bzw. 1136. Der gilt nur für dieses RDMS und kann bei anderen ganz anders aussehen. Darum gibt es dann einen zweiten Fehlercode (42000/21S01), der weitestgehend standardisiert ist und bei vielen Datenbank-Systemen gleich sein soll. Zu guter Letzt bekommen wir noch eine Beschreibung des Fehlers. In diesem Fall ist es ein sanfter Hinweis darauf, dass unsere Abfrage ziemlicher Müll ist.

4. Die Fehler abfangen

Dazu bietet uns PHP erstaunlicherweise nur zwei Funktionen. Da hätten wir zunächst mysql_errno(), mit dem wir den internen Fehlercode ermitteln können. Und für die Meldung gibt es mysql_error(). Ach ja, eine komplette Übersicht gibt es hier. Und soweit ich das überblicke, scheint sich an den grundsätzlichen Fehlermeldungen bei den verschiedenen Versionen nicht viel getan zu haben.

5. Fazit

Ich hoffe, dass die blutigen Anfänger unter euch ein klein wenig über die Funktionsweise von MySQL und dem Zusammenspiel mit PHP gelernt haben. Auch wenn wir hier den umständlichen Weg über den Kommandozeilen-Client gegangen sind. Aber das stählt euch für kommende Aufgaben.

Ach ja, jetzt kommt natürlich das übliche "Wer damit nicht klar gekommen ist, schicke mir bitte eine Mail". Aber das gehört einfach zum guten Ton dazu. Also haut rein.

zurück zum vorherigen Abschnitt