我很沮丧。我想能够插入到我的数据库名称与单引号-例如,奥康纳。
所以,当插入数据库时,我会:

 $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上,我没有编辑文件的权限:(

最佳答案

听起来好像在php配置中启用了Magic Quotes
要检查是否已实际启用:

echo get_magic_quotes_gpc();

To disable,编辑php.ini文件:
; Magic quotes
;

; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off

; 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

或者将此行添加到.htaccess:
php_flag magic_quotes_gpc Off

10-04 15:45