复杂的PHP错误:尝试转义数组

时间:2018-05-20 05:21:29

标签: php arrays mysqli escaping

我试图通过mysqli转义数组mysqli_real_escape_string函数。 但它不会起作用,因为它需要一个字符串。 所以我用这个:

$items = array_map('mysqli_real_escape_string', $link, $_POST['items']);

其中$ link是我的数据库连接,$ _POST [' items']是数组。 但是我得到了这个错误:

Warning: array_map(): Argument #2 should be an array

所以我把它改成了:

$items = array_map('mysqli_real_escape_string', $_POST['items']);

其中第二个参数是一个数组,然后我收到此消息:

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given

所以我又把它改成了:

$items = array_map('mysqli_real_escape_string', $_POST['items'], $link);

但现在我明白了:

Warning: array_map(): Argument #3 should be an array

经过一番研究,我尝试了这些代码:

$items = array_map('mysqli_real_escape_string', $_POST['items'] [,$link]);
$items = array_map('mysqli_real_escape_string($link)', $_POST['items']);

但没有一个有效。

任何帮助都是适当的。 感谢。

编辑: 我试过这个:

function escape_array($array){
    global $link;
    mysqli_real_escape_string($link, $array);
    return;
}

$items = array_map('escape_array', $_POST['items']);
echo $items;

应该用连接调用mysqli_real_escape_string,但我得到了这个错误:

( ! ) Notice: Array to string conversion in D:\wamp64\www\sellerpanel\test.php on line 21
Call Stack
#   Time    Memory  Function    Location
1   0.0007  370968  {main}( )   ...\test.php:0
Array

1 个答案:

答案 0 :(得分:1)

您可以使用导入$link变量的匿名函数来执行此操作。

$items = array_map(function($x) use ($link) {
    return mysqli_real_escape_string($link, $x);
}, $_POST['items']);

但是,你真的不应该首先使用mysqli_real_escape_string。使用准备好的声明和mysqli_stmt_bind_param()