16.17. Meine Datenbankabfrage funktioniert nichtAntwort von Clemens KoppensteinerFehlermeldungenAls erster Anhaltspunkt sind die Fehlermeldungen der verwendeten Datenbank gut geeignet. Für viele Datenbanken bietet PHP hierfür eigene Funktionen. Dies sind zum Beispiel mysql_error() , pg_last_error() , ora_error() , odbc_errormsg() und sybase_get_last_message() . Hier ein Beispiel für MySQL function mysql_errorhandler($problem, $query = "") { echo "<font color='#FF0000'><b>Datenbankfehler:</b></font><br />\n"; echo "Problem: $problem <br />\n"; if($query != "") { echo "Query: $query <br />\n"; } echo "MySQL: " . mysql_errno() . " - " . mysql_error() . "<br /><br />\n"; } // Verbindung zum Datenbankserver herstellen if(!$db = @mysql_connect("host", "user", "password")) { mysql_errorhandler("Verbindungsaufbau gescheitert."); } // Datenbank auswählen if(!@mysql_select_db("database")) { mysql_errorhandler("Auswahl der Datenbank gescheitert."); } // Beispiel für ein SQL-Statement $query = "SELECT * FROM table WHERE x = '$x'"; $result = @mysql_query($query); if(!$result) { mysql_errorhandler("Datenbankabfrage gescheitert", $query); } Klassen zur Datenbankabstraktion (z.B. PEAR::DB) können das Fehler-Handling wesentlich vereinfachen. Reservierte WörterBestimmte Wörter sollten nicht als Namen von Feldern vorkommen, da sie andere Bedeutungen haben. Diese "Reserved Words", oder auch "Keywords", sollten im Handbuch der verwendeten Datenbank aufgelistet sein. Bei MySQL und PostgreSQL kann man das Problem umgehen, indem man den Feldnamen in Anführungszeichen einschließt: SELECT * FROM users WHERE 'group' = 2 Zuständige NewsgroupsFalls das alles nichts hilft, frage in den zuständigen Newsgroups nach. Das sind unter anderem de.comp.datenbanken.misc, de.comp.datenbanken.mysql und die englischsprachigen Gruppen comp.databases.* |
||
16.17. Meine Datenbankabfrage funktioniert nicht http://www.php-faq.de/q/q-sql-fehlerbehandlung.html |
||
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team |