我很沮丧。我希望能够用单引号插入到我的数据库名称中 - 例如,O'Connor。mysql_real_escape_string和单引号
所以,插入数据库时,我做的:
$lname = mysql_real_escape_string($_POST['lname']);
然后我插入$ LNAME到数据库。
当它在DB中时,它显示为O'Connor。
所以,如果我在我的web应用程序回顾过去的名字,我将不得不使用:
$lname = stripslashes($r["lname"]);
这一切似乎很好地工作。但是,我有一个搜索功能,它将搜索姓氏并显示结果。当我搜索时,我必须搜索O'Connor以获得任何结果。
在我搜索后,您会看到文本框会自动存储刚才搜索的内容(使用会话)。所以我的代码是这样的:
$search = mysql_real_escape_string($_GET['search']);
$_SESSION['search'] = $search;
就像我以前说过,当我搜索,我必须使用“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的,我没有权限编辑该文件:(
他没有魔法引号,他只是逃避逃脱的价值。 – 2009-07-29 15:14:21
我看不到他在哪里逃跑两次。对我来说,好像$ _POST ['lname']已经被转义了,所以在调用mysql_real_escape_string之后将它添加到数据库中会将它存储在它的转义状态中。 – jimyi 2009-07-29 15:18:10
请参阅我的编辑。似乎魔术引号已打开,但我无法编辑php.ini文件,因为它位于GoDaddy上... – littleK 2009-07-29 15:29:34