У меня есть устаревший код, который я хочу обновить. В этой версии кода (которая была бэкэндом для jqGrid) параметры поиска отправлялись на сервер в переменных POST. Ключ POST - это имя поля, а значение - значение поиска. Начиная с нескольких лет назад, я начал получать доступ только к переменным POST через функцию filter_input
, которая была предложена моей IDE. Однако я не нашел рекомендуемого способа циклически перебирать переменные POST без прямого доступа к переменной POST.
Часть устаревшего кода для параметров поиска выглядит следующим образом:
/*
* Search Filter
*/
if ($search){
$where_string = ' where ';
foreach ($_POST as $key => $value){
if (in_array($key,array('_search','nd','rows','page','sidx','sord','arg1','arg2'))==true){
continue;
}
//put in functionality to search for exact values
//to search for exact values, include a * character before the value you are searching for
if (strpos($value, "*") === 0){
//exact search
$value = substr($value,1);
}else{
//like search
$value = "%".$value."%";
}
$key = $mysqli->real_escape_string($key);
$value = $mysqli->real_escape_string($value);
$where_string .= '`'.$key.'` like "'.$value.'" AND ';
}
$where_string = rtrim($where_string,' AND ');
}
Предупреждение, которое выдает моя IDE: Do not Access Superglobal $_POST Array Directly.
в строке foreach
. Просто не уверен, должен ли я полностью избегать такого рода циклов или есть ли способ использовать filter_input с этим. Это своего рода общий код для любой таблицы. Спасибо за руководство.