我有以下的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