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