2015-12-04 2 views
1
$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"; 

На выполнения кода я получаю сообщение об ошибке:Как передать 2 аргумента функции array_map в php?

Предупреждение: 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

Или 'array_map (функции ($ а) использовать ($ CON) {...}, $ _SESSION [ 'question_attempt']) '. –

+0

@ Сугата вау .. Я добавлял это к своему ответу, и вы прокомментировали! – Thamilan

+0

Большое спасибо, вы сохранили мое здравомыслие, я размышлял об этом весь последний день. –

Смежные вопросы