![]() |
Die chatbox die ich nun habe funktioniert ganz gut, ausser wenn ich folgendes zeichen eingebe:
' dann kommt folgende fehlermeldung: "Error adding submitted comment: 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 '213.196.144.37'' at line 3" :roll: :?: wie kann ich das flicken...? thanks fox |
Mit einem ' schließt bzw. öffnest Du einen Syntax, sprich wenn er die Variable mit dem ' übergibt, dann wird dieser in die Befehlszeile eingefügt und dort als PHP interpretiert. Du könntest das Zeichen ' einfach aus der Variable herausfiltern und ersetzen.
|
Also der '-Fehler hat hier offensichtlich nichts mit PHP zu tun, sondern kommt aus den Datenbankabfragen (neudeutsch auch Statements). In SQL (Datenbankabfragesprache) dient ' häufig als Markierung für Text (z.B. soll der Text: BLABLA in die Datenbank eingefügt werden, so steht in der resultierenden Abfrage das ganze so: 'BLABLA').
Offensichtlich ist es jetzt nun so, daß die PHP Skripte nicht korrekt den in die Shoutbox eingegebenen Text nach unzulässigen Zeichen durchsuchen bzw. die Datenbankabfragen das nicht korrekt abfangen. Daher auch dein MySQL Syntax Fehler. So Problem erklärt. Lösung: Da Kannst du nur in den PHP Skripten das Durchsuchen (Parsen) des Eingabetextes nach unzulässigen Zeichen selber einbauen und diese Zeichen (hier das ') durch z.B. ein Leerzeichen ersetzen. Gruß Mario |
Zitat:
Erst schreibst Du, dass es kein PHP-Problem ist, dann empfiehlst Du, das PHP-Script zu ändern. Widerspricht sich ein wenig, oder? ;) |
Zitat:
Hi, vielleicht habe ich mich unverständlich ausgedrückt. Wenn die Ursache eine durch den Eingabetext fehlerhafte Datenbankabfrage ist und nur das kommt bei der Fehlermeldung in betracht, dann kannst du es einfach nicht über die Datenbank beheben. Beispiel: L'amour soll als Text in die Datenbank eingefügt werden. Jetzt nutzt die Datenbank aber das '-Zeichen als Textmarkierung und deine Abfrage korumpiert dadurch. Also mußt du entweder dafür sorgen, daß a) deine Abfragesyntax korrekt bleibt oder b) du die Problemzeichen von vornherein rausnimmst (bevor diese zur Datenbank kommen) Da Variante a) leichter zu bewerkstelligen (da kann er nämlich ganz einfach beim auslesen des Eingabefeldes einschreiten) ist habe ich geschrieben er solle es im PHP Code machen. Variante b) bedingt, daß man alle Stellen, an denen auf die Datenbank zugegriffen wird korrigiert. Geht auch wird aber wohl aufwendiger sein. Widerspruch aufgelöst? Gruß Mario Edit: Möglichkeit c) wäre das ganze Unicode (von Landessprachen unabhängiger Zeichensatz) tauglich zu machen, dafür kenne ich aber MySql zu wenig um zu wissen ob es dort geht. |
Mario, hab ich denn mit meinem ersten Posting was anderes als Du geschrieben? Wir sind schon auf der gleichen Wellenlänge, nur Du hast es ausführlicher geschrieben als ich. ;)
|
Hi,
naja bei deinem ersten Posting habe ich den Eindruck gehabt, daß dort der Fehler auf PHP "geschoben" wird. Das habe ich dann falsch verstanden. Er ja nun genügend Anhaltspunkte um nach dem Fehler zu suchen. Gruß Mario |
Zitat:
PHP interpretiert halt Zeichen wie " oder ' als Schreibcode und eben nicht als normalen Textinhalt. PHP hat also keine Schuld in dem Sinne. War gestern Abend kurz angebunden, vielleicht war es deswegen missverständlich. ;) |
In meiner unendlichen technischen ignoranz bin ich nicht ganz sicher ob untenstehende lösung das ist, was ich zu tun habe?
"Da Kannst du nur in den PHP Skripten das Durchsuchen (Parsen) des Eingabetextes nach unzulässigen Zeichen selber einbauen und diese Zeichen (hier das ') durch z.B. ein Leerzeichen ersetzen." thanks fox |
Jetzt gehts...ich musste tatsächlich folgendes:
$commenttext = wordwrap($commenttext, 40, ' ', 1); ändern auf: $commenttext = addslashes(wordwrap($commenttext, 40, ' ', 1)); alles pico bello now! :top: fox regards from Switzerland |
Alle Zeitangaben in WEZ +2. Es ist jetzt 17:20 Uhr. |