Я не знаю какого-либо консервативного скрипта для этого.
Но это довольно легко написать самому.
<?PHP
$valid_fields = array('field1','field2',...'fieldN');
$where = "WHERE 1=1 ";
foreach($valid_fields as $fname){
if (! empty($_GET[$fname])){
$where .= " AND $fname='" . mysql_real_escape_string($_GET[$fname]) ."'";
}
}
Этот код просто перебирает ожидаемые входные переменные, и, если они передаются в качестве параметра в $ _GET, объявляет AND в предложении WHERE.
Затем вы просто добавляете $ куда в конец вашего запроса (каким бы он ни был):
$sql = 'SELECT * FROM some_table ' . $where;
Изменить пример кода, чтобы скрыть имена столбцов:
<?PHP
//keys are parameter names in _GET, values are database column names.
$fieldmap = array(
'fname'=>'first_name',
'lname'=>'last_name'
);
$where = '1=1 ';
foreach($fieldmap as $get_name => $col_name){
if (! empty($_GET[$get_name])){
$where .= " AND $col_name = '" . mysql_real_escape_string($_GET[$get_name]) . "'";
}
}
?>