SQL UPDATE funktionier bei textarea bzw. viel Text nicht richtig

Briefkasten

Erfahrenes Mitglied
Hallo,

ich hole Text aus der DB und lasse diesen in <input type="text"> darstellen um evt. änderungen durchführen zu können.
Ich hole den neu eingeben Text und es ergibt sich dieses SQL Query:

PHP:
UPDATE doc_desc SET title = 'lol',template = 'template/template.html',css = 'files/css/layout.css',active = '' WHERE id=6

Funktioniert ganz gut.

Wenn ich nun Text aus der DB hole und diesen in <textarea> anzeigen lasse und ihn nacher mit der UPDATE Funktion "aktualisiere" funktioniert das Ganze von vorne bis hinten nicht mehr.

Ich vermute das textarea eine Besonderheit hat. Z.B wenn ich mit $_POST["textarea"] den text hole das im string irgendwelche Escape Zeichen vorhanden sind.

Oder liegt das daran das im SQL Query zu viel Text ist?

PHP:
UPDATE doc_desc SET beschreibung = 'beschreibung2',text = '
Unser Haus liegt ideal
Sie können mit dem kostenlosen Skibus zur Diasbahn fahren!
Und von der Skipiste direkt zum Haus.
Sei es mit Skiern oder mit der Rodel!


Weitere Infos zum Skigebiet finden Sie auf der Homepage http://www.bergbahnenkappl.at
',menue = '
Tipp:
Auf der Homepage www.de.map24.com können Sie ihre Anfahrt planen.
',footer = 'Alle Rechte vorbehalten.| Impressum | German | France | Belgien | English | Wir distanzieren uns nach Gesetzgebung von allen Inhalten extern gelinkter Resourcen.| Irrtum und Änderungen vorbehalten.| www.hausdorfblick.info.ms |' WHERE id=2

Ein Fehler z.B. ist das aus <a href="blabla\asdf\ha.html> -> href=\\\"http://www.de.map24.com/\\\" target = \\\"_blank\\\">www.de.map24.com</a> wird.

Hat jemand eine Idee wodurch die \\\\ entstehen?

mfg Briefkasten
 
Zuletzt bearbeitet:
Du hast warscheinlich mysql_real_escape_string() für deine Strings verwendet, was ja auch richtig (bzw. sicher) ist
Diese Funktion sorgt dafür, dass SQL Einträge für eine Zelle trennen kann. Sonnst könnte es bei bestimmten Zeichen passieren, dass auf einmal z.B. ein title-Eintrag nicht in die jeweilige Spalte geschrieben wird, sondern in beispielsweise die template-Spalte ;)

Damit in Zukunft die Maskierungen, also Backslash´s nicht mehr angezeigt werden, musst du dir einen Parser schreiben, der deinen String (der ausgelsen werden soll) nach \" durchsucht und diese durch " ersetzt
Verwenden kann man dafür z.B. str_replace()
 
Zurück