Ich bin ziemlich frustriert. Ich möchte in der Lage sein, in meine Datenbank Namen mit einfachen Anführungszeichen einzufügen - zum Beispiel O'Connor.
Beim Einfügen in die DB tue ich das also:
$lname = mysql_real_escape_string($_POST['lname']);
Und dann füge ich $lname in die DB ein.
Wenn es in der DB ist, erscheint es als O\'Connor.
Wenn ich also diesen Nachnamen in meiner Webanwendung abrufen möchte, muss ich ihn verwenden:
$lname = stripslashes($r["lname"]);
Das scheint alles gut zu funktionieren. Ich habe jedoch eine Suchfunktion, die nach Nachnamen sucht und die Ergebnisse anzeigt. Wenn ich suche, muss ich nach O\'Connor suchen, um Ergebnisse zu erhalten.
Nachdem ich eine Suche durchgeführt habe, speichert das Textfeld automatisch den Wert dessen, wonach gerade gesucht wurde (unter Verwendung von Sitzungen). Mein Code ist also dieser:
$search = mysql_real_escape_string($_GET['search']);
$_SESSION['search'] = $search;
Wie ich bereits sagte, muss ich bei der Suche "O\'Connor" verwenden, und nach der Suche wird der Wert im Textfeld zu "O \\\\ Connor"
Es war frustrierend, das herauszufinden. Weiß jemand, was ich falsch mache? Danke!
EDIT:
Hier ist meine php5.ini-Datei, die magische Anführungszeichen betrifft:
; Magic quotes
;
; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = On
; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off
; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = Off
Allerdings ist meine Website bei GoDaddy gehostet, und ich habe keine Berechtigung, die Datei zu bearbeiten :(