Как передать 2 аргумента функции array_map в php?

$sql="select * from question_test where test_id='".$test_id."'   and  difficulty_level   BETWEEN  ".$_SESSION['difficulty_start']." and  ".$_SESSION['difficulty_end']." and question_id NOT IN ('".implode("', '", array_map('mysqli_real_escape_string', $_SESSION['question_attempt']))."')  order by rand()*favourability_level  desc";

При запуске приведенного выше кода я получаю сообщение об ошибке:

Предупреждение: mysqli_real_escape_string () ожидает ровно 2 параметра, 1 указан в C: \ xampp \ htdocs \ exam.php в строке 359

1

Решение

Вместо этого используйте функцию обратного вызова

function array_map_callback($a)
{
global $con;
return mysqli_real_escape_string($con, $a);
}

array_map('array_map_callback', $_SESSION['question_attempt']);

где $con переменная соединения

Так что ваши $sql переменная будет:

$sql="select * from question_test where test_id='".$test_id."' and  difficulty_level BETWEEN  ".$_SESSION['difficulty_start']." and  ".$_SESSION['difficulty_end']." and question_id NOT IN ('".implode("', '", array_map('array_map_callback', $_SESSION['question_attempt']))."')  order by rand()*favourability_level  desc";

или вы можете пойти с array_walk

array_walk($_SESSION['question_attempt'], function(&$string) use ($con) {
$string = mysqli_real_escape_string($con, $string);
});
1

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

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

По вопросам рекламы [email protected]