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 syntax;
check 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.