Sönke Tesch: nicht abgeschlossene Zeichenfolge

Beitrag lesen

ich habe ein paar php-Klassen, diese generieren verschiedene Meldungen, unter diesen auch mysql-Fehlermeldungen. So ne meldung kann so aussehen:

Ein Datenbankfehler ist aufgetreten => 1064: You have an error in your SQL syntax near ''x','y','z'))' at line 2

gut, jetzt wenn ich es in ein select einlesen möchte, bekomme ich ne Meldung: nicht abgeschlossene Zeichenfolge. Dass ich die sämlichen "'" und überflüssigen ")" oder "(" entfernen muss ist schon klar, obwohl ich damit nicht einverstanden bin, weil es für den user nicht mehr verständlich sein mag.
Ausserdem muss ich anscheinend auch "" wegtun - da kommt ne Meldung "hexadezimaler Wert erwartet". Wie soll ich es anstellen, dass es javascript in das select-html-Element einlesen kann, also dass die Zeichenfolge nur gültige Zeichen enthält ?

Wie auch schon Herr Schnauß aus Berlin bin auch ich etwas rat- und hilflos ob Deiner Fehlerbeschreibung, hauptsächlich, weil Du vergessen hast, das fehlerhafte Objekt mitzuliefern. Versuche mal, in einer Autowerkstatt ein Auto reparieren zu lassen, obwohl Du das Auto garnicht mitgebracht hast und dem Mechaniker nur die Worte "Es macht nur tuck-tuck-krrrst-peng und daß ich am Nippel ziehen muß, ist mir klar" in's Ohr säuseln kannst.

Der Mechaniker wird Dir dann vielleicht raten, etwas Öl nachzufüllen. Entsprechend in's Blaue hinein rate ich Dir, auf Deine Daten eventuell Funktionen wie mysql_escape_string() oder htmlentities() (PHP) oder escape() (Javascript) auszuprobieren.

Wenn es sich um eine Javascript-Fehlermeldung handelt (was man nach Deiner Beschreibung auch nur vermuten kann): Jeder Browser gibt Dir eine Zeilennummer zur Fehlermeldung. Schau Dir den Quelltext im _Browser_ mal an und zähle die Anführungszeichen. Bei einem Javascript-Fehler wirst Du mit einer Suche im PHP-Quelltext nicht viel erreichen, weil der Browser den PHP-Quelltext nie zu sehen bekommt, sondern nur die HTML-Ausgabe des PHP-Skriptes. Somit existiert auch der gemeldete (!) Fehler nur in dem, was der Browser vorliegen hat und nicht im PHP-Code. Die Ursache für diesen Fehler ist allerdings sicherlich wieder im PHP-Skript zu finden.

In freudiger Erwartung einer Gewinnbenachrichtigung,

Gruß,
  soenk.e