我对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]);

每次脱离字符串时,所有反斜杠都会逃逸为两个反斜杠。小心,每根绳子只能逃脱一次。

09-27 07:53