php - 使用 mysql_real_escape_string 时更多的斜线

标签 php mysql arrays mysql-real-escape-string

我对 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/

相关文章:

PHP - 仅当数组1中存在键时才使用数组2覆盖数组1中的值

php - *.php 文件上的 Adob​​e Air Javascript

php - 无效参数编号 : parameter was not defined

PHP 在 while 循环中切换

mysql - 如何优化多个子查询?

php - SQL - 如果记录存在于表中,则插入到表中

arrays - 如何从数组中找到最小值

arrays - ActionScript 自定义排序函数

javascript - 重定向到 php 页面后使用 javascript 显示消息

php - Laravel 5.4 中非多形式/形式数据的单个文件上传