Сложная ошибка PHP: попытка экранировать массив

Я пытаюсь 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

Решение

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector