1

私は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 \\\\\\\'\\\\\\\'

それの理由、または私はただ何か間違ったことをします。

4

1 に答える 1

3

指定したコードでは、文字列を2回エスケープしています。

$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]);

文字列をエスケープするたびに、すべての円記号が2つの円記号にエスケープされます。各文字列を1回だけエスケープするように注意してください。

于 2012-07-02T21:37:35.430 に答える