$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
Вместо этого используйте функцию обратного вызова
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);
});
Других решений пока нет …