我对 mysql_real_escape_string()
函数有点困惑,
我在下面有这个数组并用 mysql_real_escape_string()
函数过滤它,
$postFields = array('company', 'type');
$postArray = array();
foreach($postFields as $postVal){
$_POST[$postVal] = array_map("mysql_real_escape_string", $_POST[$postVal]);
$postArray[$postVal] = $_POST[$postVal];
}
所以结果是这样的,
Array
(
[type] => Array
(
[0] => CD
)
[code] => Array
(
[0] => \\\'\\\' OR \\\'\\\'
)
)
但是当我想像这样单独使用它时,
echo mysql_real_escape_string($postArray['company'][0]);
我得到了更多的斜线,像这样,
\\\\\\\'\\\\\\\' OR \\\\\\\'\\\\\\\'
任何原因,或者我只是做错了什么。
最佳答案
在您提供的代码中,您对字符串进行了两次转义:
$postFields = array('company', 'type');
$postArray = array();
foreach($postFields as $postVal){
$_POST[$postVal] = array_map("mysql_real_escape_string", $_POST[$postVal]);
$postArray[$postVal] = $_POST[$postVal];
}
echo mysql_real_escape_string($postArray['company'][0]);
每次对字符串进行转义时,所有反斜杠都会转义为两个反斜杠。注意每个字符串只转义一次。
关于php - 使用 mysql_real_escape_string 时更多的斜线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11301397/