我很沮丧 我希望能够在数据库名称中插入单引号-例如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上,并且我没有编辑文件的权限:(
听起来您的PHP配置中启用了“ 魔术引号”。
要检查它是否真正启用:
echo get_magic_quotes_gpc();
要禁用,请编辑您的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