php - 使用 mysqli 转义字符串转义数组

标签 php arrays mysqli

<分区>

我需要转义数组,我正在使用 array_mapmysqli_real_escape_string

我有多个数组,比如

$_post['countries'];
$_post['categories'];
.
.

我如何对这些数组执行转义

我是这样做的

$countries=array_map('mysqli_real_escape_string', $_POST['countries']);
$categories=array_map('mysqli_real_escape_string', $_POST['categories']);
.
.

但它显示错误为 Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in

也在做

$categories=mysqli_real_escape_string($connection, $_POST['categories']); 

给出错误为

Warning: mysqli_real_escape_string() expects parameter 2 to be string, array given in

请查看并建议一种或另一种更好的方法来做到这一点。

谢谢

最佳答案

这里有很多解决方案。

考虑到你想坚持使用 mysqli(PDO 现在是推荐的方式,但仍然是一个选择)并且你想在这个上下文中继续使用 array_map,你必须检查 array_map 原型(prototype):http://php.net/array_map

array array_map ( callable $callback , array $array1 [, array $... ] )

所以:

  1. 使用 array_map 的动态参数

    注意:这个解决方案很糟糕,而且是错误的。

    原始答案:$myArray = array_map('mysqli_real_escape_string', $db, $myArray);

    更新的答案:$myArray = array_map('mysqli_real_escape_string', $myArray, array_fill(0, count($myArray), $db)); 这对 mysqli 对象来说是个坏主意。

  2. 使用数组调用

    因为mysqli_real_escape_string也是mysqli的一个方法... $myArray = array_map(array($db, 'real_escape_string'), $myArray);

  3. 使用闭包

    $myArray = array_map(function($e) use($db) { return mysqli_escape_string($db, $e); }, $myArray);

    $myArray = array_map(function($e) use($db) { return $db->real_escape_string($e); }, $myArray);

关于php - 使用 mysqli 转义字符串转义数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35940983/

相关文章:

javascript - 使用 select2 将 php 数组转换为 javascript 数组

php - mysqli_store_result() 实际上做了什么?

php - 在mysql、php中选择一个属性

PHPlush 调用时不打印输出

PHP Date() 显示不正确的时区

php - 无法在 UBUNTU 中安装 LAMP 服务器

Java ArrayList.remove() 不减少 ArrayList 的大小

javascript - 如何在不创建新数组的情况下用另一个数组扩展现有 JavaScript 数组

php - 使用数组 SQL 获取 ID

php - 未定义索引错误(来自数据库)