我试图通过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
答案 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()
。