我很沮丧。我希望能够在我的数据库名称中插入单引号 - 例如,O'Connor。
因此,当插入数据库时,我会:
$lname = mysql_real_escape_string($_POST['lname']);
然后我将 $lname 插入数据库。
当它在数据库中时,它显示为 O\'Connor。
因此,如果我要在我的 Web 应用程序中回忆那个姓氏,我将不得不使用:
$lname = stripslashes($r["lname"]);
这一切似乎都很好。但是,我有一个搜索功能,可以搜索姓氏并显示结果。当我搜索时,我必须搜索 O\'Connor 才能得到任何结果。
你看,在我搜索之后,文本框会自动存储刚刚搜索的值(使用会话)。所以我的代码是这样的:
$search = mysql_real_escape_string($_GET['search']);
$_SESSION['search'] = $search;
就像我之前说的,当我搜索时,我必须使用“O\'Connor”,然后我搜索后,文本框中的值变成了“O\\\\'Connor”
试图弄清楚这一点令人沮丧。有谁知道我做错了什么?谢谢!
编辑:
这是我的 php5.ini 文件,关于魔术引号:
; 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
但是,我的网站托管在 GoDaddy 上,我没有编辑文件的权限 :(