Hi Ricko,
ich möchte mal gerade versuchen, noch etwas zum Grundverstaendnis beizutragen:
Funktionen wie hmtlspecialchars und mysql_real_escape_string haben nicht den Zweck, einen String (nachhaltig) zu veraendern!
Wenn ich (in PHP) einen String der Form "Peter O'Donnel" habe und diesen in eine MySQL-Datenbank speichern will, dann habe ich das Problem, dass in SQL das String-Literal "Peter O'Donnel" diesen String nicht repraesentiert, weil es (nun, ım SQL-Kontext) ein Sonderzeıchen enthaelt.
mysql_real_escape_string darauf angewandt, liefert etwa den (PHP-)String "Peter O'Donnel", und dieser, als String-Literal in SQL angwandt, produziert wieder exakt den gewünschten String "Peter O'Donnel", der in der Datenbank gespeichert wird.
Fazit: Der String in der Datanbank ist exakt derselbe, den wir anfangs auch in PHP hatten (und das ist gut so, denn genau den wollten wir ja speichern), und daher gibt es *nichts*, was beim Auslesen wieder rueckgaengig gemacht werden koennte oder muesste. Wenn Du Dich nach dem Auslesen dafuer entscheiden solltest, den String in einem HTML-Dokument auszugeben, dann musst Du wiederum fuer den HTML-Quelltext ein Literal produzieren, das in HTML den String "Peter O'Donnel" repraesentıert. Dafuer gibts htmlspecialchars (auch wenn in dem Fall keine Sonderzeichen im String sind).
Also: Da wird ueberhaupt nichts rueckgaengig gemacht, mysql_real_escape_string und html_specialchars haben nicht die Bohne miteinander zu tun.
Und jetzt kannste Dich weıter mit ChrısB streiten gehen ;-)
Viele Gruesse,
der Bademeister