Apostroph in mySQL-Query's
MisterIKS
- php
Hallo!
Ich versuche schon seit Stunden, einen Text, den ich per POST aus einer textarea auslese in meine mySQL Datenbank zu schreiben. Das ganze funktioniert wunderbar, solange bis der Text ein ' (Apostroph / einzelnes Anführungszeichen) enthält. Der Text wird dann einfach nicht in die Datenbank geschrieben und nichteinmal ein neuer Eintrag in der Tabelle erstellt.
Ich habe schon alles versucht, was ich finden konnte. Ich habe versucht, das Zeichen manuell zu ersetzen:
meintext = str_replace("'","\'",meintext)
Ich habe mysql_real_escape_string innerhalb der Query benutzt:
mysql_query("INSERT INTO meinetabelle (
id,
text) VALUES (NULL, '".mysql_real_escape_string(meintext)."')");
Nichts hilft, obwohl ich sicher bin, dass magic_escape_gpc in der php.ini deaktiviert ist.
Ich weiß einfach nicht mehr weiter, hier im Forum und sonst überall geht es doch auch...
Vielen Dank und viele Grüße
Philipp Voigt
Moin!
Hallo!
Nutze prepared Statements
Nee, wenn Escaping nicht funktioniert, dann ist irgendwas grundsätzlich falsch, und auch Prepared Statements helfen nichts.
Wobei die Frage ist, wo der Fehler liegt. Genaue Informationen hat MisterIKS ja nicht mitgeteilt, beispielsweise Fehlermeldungen von der Datenbank.
- Sven Rautenberg
Moin!
N'abend
Wobei die Frage ist, wo der Fehler liegt. Genaue Informationen hat MisterIKS ja nicht mitgeteilt, beispielsweise Fehlermeldungen von der Datenbank.
Das hatte ich auch eher als allgemeinen Hinweis geschrieben.
Ende... I'm out for this week!
Ich habe meinen Fehler gefunden und er ist so banal, dass ich es sein 4 Stunden nicht bemerkt habe -.-
Ich füge 2 Texte in die Dateibank ein, habe aber nie beachtet, dass auch der 2. Text ein Apostroph enthält. Ich verwende jetzt für beide Texte mysql_real_escape_string() und alles funktioniert!
Danke für eure Hilfe, währen der Umstellung auf P.S. habe ich es bemerkt.
Moin
Ich füge 2 Texte in die Dateibank ein, habe aber nie beachtet, dass auch der 2. Text ein Apostroph enthält. Ich verwende jetzt für beide Texte mysql_real_escape_string() und alles funktioniert!
Du solltest _grundsätzlich_ Daten mit der mysql_real_escape_string() bzw mysqli_real_escape_string() behandeln, die du in die Datenbank schreibst. Wenn du dir das angewöhnst, musst du auch nicht mehr groß drüber nachdenken und solche fehler passieren nicht.
Gruß Bobby
Hi!
Du solltest _grundsätzlich_ Daten mit der mysql_real_escape_string() bzw mysqli_real_escape_string() behandeln, die du in die Datenbank schreibst. Wenn du dir das angewöhnst, musst du auch nicht mehr groß drüber nachdenken und solche fehler passieren nicht.
Prinzipien sind nicht dazu da, das Nachdenken zu ersetzen. Es ist falsch, _grundsätzlich_ Daten mit mysql(i)_real_escape_string() zu behandeln. Die Funktion(en) müssen situationsgerecht eingesetzt werden. Siehe Zahlen im MySQL-Statement.
Lo!
@@MisterIKS:
nuqneH
Das ganze funktioniert wunderbar, solange bis der Text ein ' (Apostroph / einzelnes Anführungszeichen) enthält.
Der Text "Apostroph in mySQL-Query's" sollte keinen Apostroph enthalten.
IMHO sollten Texte keine falschen[tm] Apostrophe ' U+0027 enthalten, sondern richtige[rm] Apostrophe ’ U+2019 (sofern ein Apostroph an der jeweiligen Stelle richtig ist). Das sieht erstens besser aus und schafft zweitens keine Probleme mit Maskierungen.
Qapla'