Сложная ошибка PHP: попытка экранировать массив - PullRequest
0 голосов
/ 20 мая 2018

Я пытаюсь 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 голосов
/ 20 мая 2018

Вы можете сделать это с помощью анонимной функции, которая импортирует переменную $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().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...