Php 这是否允许mysql\u real\u escape\u字符串全局工作?

Php 这是否允许mysql\u real\u escape\u字符串全局工作?,php,mysql-real-escape-string,Php,Mysql Real Escape String,通过执行此语句,每个post值现在是否通过mysql\u real\u escape\u string进行转义?否。这根本不起作用:$\u post是一个数组:mysql\u real\u escape\u string需要一个字符串作为其第一个参数。但是,您可以通过以下方式实现您的目标: 或者由于数组\u映射对数组post值不起作用: $_POST = array_map('mysql_real_escape_string', $_POST); 不过,最好使用参数化查询:这是迄今为止避免SQ

通过执行此语句,每个post值现在是否通过
mysql\u real\u escape\u string
进行转义?

否。这根本不起作用:
$\u post
是一个数组:
mysql\u real\u escape\u string
需要一个字符串作为其第一个参数。但是,您可以通过以下方式实现您的目标:

或者由于
数组\u映射
对数组post值不起作用:

$_POST = array_map('mysql_real_escape_string', $_POST);

不过,最好使用参数化查询:这是迄今为止避免SQL注入的最安全的方法。上述选项不仅可以进行不必要的转义(例如,
$\u POST
数组中不需要插入数据库的成员),还使得在其他上下文中使用数据变得更加困难,例如,以某种方式将它们返回到浏览器。

不。这根本不起作用:
$\u POST
是一个数组:
mysql\u real\u escape\u string
需要一个字符串作为其第一个参数。但是,您可以通过以下方式实现您的目标:

或者由于
数组\u映射
对数组post值不起作用:

$_POST = array_map('mysql_real_escape_string', $_POST);

然而,更好的做法是使用参数化查询:这是迄今为止避免SQL注入的最安全的方法。上述选项不仅可以进行不必要的转义(例如,
$\u POST
数组中不需要插入数据库的成员),还使得在其他上下文中使用数据变得更加困难,例如,以某种方式将数据返回到浏览器。

由于$\u POST是一个数组,这将给您带来一个错误


链接:

由于$\u POST是一个数组,这将给您一个错误

链接:

否,但您可以使用或来实现这一点,因为需要一个字符串(如图所示…)作为输入,您将向其传递一个数组。 这样,就可以为每个数组元素传递相同的回调函数:

array_walk_recursive($_POST, function(&$v, $k) {$v = mysql_real_escape_string($v);});
但是最好相应地处理每个值,例如,将INT转换为INT等,或者更好。

不,但是您可以使用或实现这一点,因为需要字符串(见图…)作为输入,而您要传递一个数组。 这样,就可以为每个数组元素传递相同的回调函数:

array_walk_recursive($_POST, function(&$v, $k) {$v = mysql_real_escape_string($v);});
但最好相应地处理每个值,例如将INT转换为INT等,或者更好。

$escapedPost=array\u map(array($this,'recursive\u escape'),$\u POST)

$escapedPost=array\u-map(array($this,'recursive\u-escape'),$\u-POST)


请读这本书。谢谢你的双重提醒。我想你在找这个:请阅读。阅读。谢谢你的双重提醒。我想你在寻找这个:事实上,答案更新以反映这一点,而达米恩的正确答案被投了赞成票。另一个警告仍然适用。当然,我认为另一个警告是真正的警告,映射我认为无法治愈原因的阵列,没有银弹。事实上,答案更新以反映这一点,Damien的正确答案被投票支持。另一个警告仍然适用。当然,我认为另一个警告才是真正的警告,映射我认为无法治愈病因的阵列,没有银弹。@hakre谢谢,如果您找到了,请随意编辑我的答案errors@hakre谢谢,如果您发现错误,请随时编辑我的答案此功能不应使用,当它恢复已从语言中删除的magic quotes功能时。当它恢复已从语言中删除的magic quotes功能时,不应使用此函数。
/**
 * recursively escape an array containing strings and/or arrays
 */
function recursive_escape($value) {
    if (is_array($value)) {
        array_map(array($this, 'recursive_escape'), $value);
    } else {
        $value = mysql_real_escape_string($value);
    }
    return $value;
}