Eintrag mit Sonderzeichen
Mario
- datenbank
Moin alle Mann,
ich habe mir ein Gästebuch gebaut. Jeder Eintrag soll in einer MySQL-Datenbank gespeichert werden.
Solange der Nutzer das Zeichen " nicht verwendet klappt es auch.
Wenn jedoch das Zeichen " im Text enthalten ist, wird der Komplette Datensatz NICHT angelegt.
Meine erste Idee war, das kommentar durch Zeichen für Zeichen in einer While-Schleife zu scannen und ggf. das " durch ein ' zu ersetzen.
Das proeblem ist nur, dass ich ja gar nicht nach einem " scannen kann ;)
Wie sieht denn da jetzt die beste Lösung aus?
Gruß Mario
Hellihello
vielleicht hilft das Stichwort "kontextspezifische Maskierung".
Dank und Gruß,
Hallo frankx,
Vielen Dank für den Tipp mit
"kontextspezifische Maskierung"
Leider werden nur gerade Wartungsarbeiten unter der "Suche" vorgenommen, sodass ich da nicht großartig was machen kann.
Google spuckt mir da auch nichts gluges raus.
Kannst Du vielleicht noch ein bischen mehr in die Tiefe gehen bzw. details nennen, wie mein Problem lösen könnte.
Vielen Dank
Hellihello
Leider werden nur gerade Wartungsarbeiten unter der "Suche" vorgenommen, sodass ich da nicht großartig was machen kann.
Google spuckt mir da auch nichts gluges raus.
Kannst Du vielleicht noch ein bischen mehr in die Tiefe gehen bzw. details nennen, wie mein Problem lösen könnte.
http://www.google.de/search?q=kontextspezifisch maskieren mysql anführungszeichen
???
Dank und Gruß,
http://www.google.de/search?q=kontextspezifisch maskieren mysql anführungszeichen
???
mhh... da bin ich auch nicht wirklich schlau draus geworden.
Aber habe eine andere Lösung gefunden: htmlentities()
Trotzdem Danke
Gruß
Hallo,
mhh... da bin ich auch nicht wirklich schlau draus geworden.
Aber habe eine andere Lösung gefunden: htmlentities()
das ist *keine* Lösung, das ist Unfug. Du bringst die Daten in einen SQL-Kontext und nicht in einen HTML-Kontext.
Wenn Du noch die veralteten mysql_*-Funktionen verwendest, dann heißt die Lösung mysql_real_escape_string(), wie Matze bereits erwähnte. Verwendest Du mysqli (empfehlenswert), so könntest Du mysqli_real_escape_string() oder Prepared Statements verwenden.
Freundliche Grüße
Vinzenz
Hallo Vinzenz!
Wenn Du noch die veralteten mysql_*-Funktionen verwendest, dann heißt die Lösung mysql_real_escape_string(), wie Matze bereits erwähnte. Verwendest Du mysqli (empfehlenswert), so könntest Du mysqli_real_escape_string()
Kannst du mir bitte sagen was der Unterschied ist? Bzw. warum mysqli jetzt vorzuziehen wäre?
Danke und Grüße, Matze
Hallo,
Wenn Du noch die veralteten mysql_*-Funktionen verwendest, dann heißt die Lösung mysql_real_escape_string(), wie Matze bereits erwähnte. Verwendest Du mysqli (empfehlenswert), so könntest Du mysqli_real_escape_string()
Kannst du mir bitte sagen was der Unterschied ist? Bzw. warum mysqli jetzt vorzuziehen wäre?
Um "neuere" Features von MySQL 4.1.3 und neuer nutzen zu können.
Siehe http://www.php.net/manual/de/mysqli.overview.php, insbesondere ab Abschnitt "What are the main PHP API offerings for using MySQL?". Beachte bitte die Hinweise in den Kästen.
Freundliche Grüße
Vinzenz
Hallo Mario!
Kannst Du vielleicht noch ein bischen mehr in die Tiefe gehen bzw. details nennen, wie mein Problem lösen könnte.
Damit meint Frank, dass du die Daten dem Kontext entsprechend maskieren sollst.
In welchem Kontext befindest du dich? Datenbank, also vermutlich MySQL.
MySQL reserviert genauso wie PHP oder HTML gewisse Zeichen.
Bei PHP musst du z.B. den Backslash vor bestimmte Zeichen setzen um sie darzustellen anstatt sie zu interpretieren. Beispiel echo 'O'raily';
Bei HTML sind es z.B. die Zeichen "<" und ">" die maskiert werden sollten. Beispiel <> ergibt <>.
MySQL reserviert genauso bestimmte Zeichen. Damit sie nicht als solche behandelt werden, muss man sie maskieren. In dem Fall mit mysql_real_escape_string().
Grüße, Matze