PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Text mit ' in mysql Datenbank schreiben



lou_ziffer
28-11-2002, 09:49
hi Forum,
habe folgendes Problem:
Ich habe ein Formularfeld (textarea), in das der User einen Text eingeben kann. Durch klicken auf den Button "abschicken" soll der Text per UPDATE in die mysql-Datenbank gespeichert werden. Das funktioniert soweit auch noch. Nur, wenn ich z.B. diesen Text eingebe:

Warum funktioniert's nicht?

... dann bekomme ich einen mysql Fehler.
Ist eigentlich auch klar, warum. Das Problem ist das Zeichen '.
Jetzt sieht das SQL-Statement natürlich so aus:

UPDATE tbl_data SET textfield = 'Warum funktioniert's nicht' WHERE cid = 12345

Klar das das nicht funktioniert ... Wie kann ich dieses Problem umgehen? Könnte mir bitte jemand ein Beispiel posten? Ich komm einfach nicht drauf, wies geht ...

Danke schonmal im Vorraus!

mfg,
lou

The Ripper
28-11-2002, 12:05
Du musst das einfache Anführungszeichen durch zwei einfache Anführungszeichen ersetzen, geht ganz einfach mit:


$db_text = str_replace("'", "''", $text);
mysql_query("UPDATE tbl_data SET textfield = '$db_text' WHERE cid = 12345");

Gaert
28-11-2002, 14:37
Hallo Ripper!

Das ersetzen von ' durch '' (2 X ') benötigst du z.B. bei Oracle... bei mysql ist addslashes besser, da es sämtliche Anführungszeichen und \ escaped!



$db_text = addslashes($text);

The Ripper
28-11-2002, 16:52
dann musst du nach dem Auslesen aber wieder stripslashes drüberlaufen lassen ;)
Laut MySQL-Dokumentation muss man lediglich die Anführungszeichen, mit denen man den String einleitet, Escapen (Bei 'String': '' oder \' und bei "String": "" oder \")

Xerxes
28-11-2002, 19:54
wenn magic quotes auf on sind, werden die slashes bei gpc-daten automatisch gesetzt. :) dann braucht man sich darum nicht mehr zu kümmern.

sticky bit
30-11-2002, 18:24
Wie wärs mit mysql_escape_string()?

Gaert
30-11-2002, 20:59
wieder was gelernt