Hi,
ich habe ein php-Formular, dessen Eingaben ich erst nach Behandlung mit addslashes in die mysql-Datenbank speichere.
Das ist in aller Regel Unfug.
Nutze die Funktionalitaet, die die DB-Schnittstelle dir dafuer zur Verfuegung stellt. Bei MySQL ist dies bspq. mysql_real_escape_string().
Das Escapen scheint dabei aber nicht wie gewünscht zu funktionieren.
Ein String wie \ ' steht auch genauso in der Datenbank. Wenn ich mir die Werte aus der Datenbank mit stripslashes anzeigen lassen will, wird daraus natürlich \ '
Was mache ich falsch?
Dir ist nicht klar, wozu das Escapen dient. Es dient ausschliesslich dazu, dass die DB-Schnittstelle dich nicht missversteht. Der Text Hans' Auto waere missverstaendlich, wenn du ihn in einem SQL-Statement als 'Hans' Auto' notierst - da waere der String schon nach Hans wieder zu Ende.
Also escaped man 'Hans' Auto' - damit ist das fuer die Schnittstelle verstaendlich. Die eigentlichen Daten soll das aber natuerlich nicht versauen - man will ja Hans' Auto in die DB eintragen. Und genau so versteht die das auch - es steht dann wirklich nur Hans' Auto in der DB, alles andere waere ja bloedsinnig. Und deshalb ist es auch absolut ueberfluessig, nach dem Auslesen aus der Datenbank, die dir ja nur Hans' Auto wieder zurueckgibt, das Escapen wieder "rueckgaengig" machen zu wollen - es _gibt_ nichts rueckgaengig zu machen.
MfG ChrisB