我有以下的select语句:逃离串
$res = mysql_query("select * from Table where Name='{$_REQUEST['name']}'");
然而,由于这种查询很容易受到SQL注入,我使用选择一个更安全的方式:
$escaped_name=mysql_real_escape_string($_REQUEST['name']);
$res = mysql_query("select * from Table where Name='{$escaped_name}'");
它一切正常,直到我尝试运行包含字符串Joel's
的$_REQUEST['name']
的选择。在这种情况下,选择不起作用。调试和印刷$escaped_name
内容到屏幕后,我得到了以下内容:
Joel\\\'s
,这是什么原因呢?看起来这个字符串是自动转义的,然后我再次逃脱了。
+1!请注意,您也可以在php.ini中禁用此功能(当然)。 – jwueller 2010-11-09 11:35:20