PHP Fehlerbehandlung (mit MySQL)

Hallo

bei dem folgendem Script tritt immer ein Fehler auf. Ich kann ihn nicht finden!

Es gibt dann immer das aus
2010-02-19 16:06:58 (CET) 8 Notice Use of undefined constant FTRDE_DESD - assumed ‘FTRDE_DESD’ [quote](diese angabe ist ja erwünscht)[/quote]

Anfrage fehlgeschlagen: 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 ‘FTRDE_DESD’ ’ at line 1 [quote]und das verstehe ich nicht!![/quote]

Beim Passwort, Host, User, DB, und Tabelle (existiert auch) bin ich mir sicher!

könnt ihr mir helfen??

Lg max

Auf den ersten Blick sieht es so aus, als ob $dg anschließend noch in einem Mysql-Query verwendet wird.
Das ist aber das vollständige Skript, oder?

lG
Revo

Ja und was macht man da?

Ja volstendig bloß das es im Orginal 2 Dateien sind (fehler.php wird eingebunden)

lg max

Dieses Skript gibt das Gleiche aus:

Ach ja danke schonmal

Ganz unten dient das FTRDE_DESD lediglich dazu um einen Fehler zu erzeugen.
Der Fehler wird an die Funktion userErrorHandler anschließend wie gewollt übergeben.
Der entscheidene Punkt dabei ist die von PHP gelieferte Fehlernachricht:

Diese enthält einfache Anführungsstriche, was beim SQL-Query zu Problemen führt:

da die Fehlernachricht ebenfalls in $err abgelegt ist, und diese innerhalb des SQL-Statements von einfachen Anführungsstriche umgeben ist, führt das zu einem Fehler der SQL-Syntax.
Um den zu umgehen solltest du mysql_real_escape_string() auf die Variable $err anweden:

außerdem sollte “unbeantwortet” nicht auf diese Art angegeben werden, wenn es sich um einen String handelt, der abgespeichert werden soll (handelt es sich jedoch um eine vorher per define() definierte konstante, dann wäre die erste Variante richtig):


Sinnvoll bei solchen Fehler ist es die Variable $sql vor dem verwenden bei mysql_query mit einem echo einfach mal auszugeben, um zu sehen was in der Variable genau für SQL Befehle stehen. So findet man den Fehler eigentlich recht schnell.

mfg Balmung

DANKE

es geht jetzt

super vielen DANKE

lg max