Php SQL查询,其中筛选器=*

Php SQL查询,其中筛选器=*,php,sql,filter,where,Php,Sql,Filter,Where,用PHP/sql编写一个小过滤器。 用户从两个过滤器选项中进行选择,但是他们也可以选择过滤器中的“全部”,基本上只是使查询不过滤该结果 使用基本WHERE方法,查询如下所示 $query = ("SELECT * FROM user WHERE userid = '$userid' AND department = '$department'"); 我如何调整它,使过滤器返回该特定过滤器的所有结果?因为在php中编写一堆if-else语句看起来很笨重。使用Switch语句-php.net/ma

用PHP/sql编写一个小过滤器。 用户从两个过滤器选项中进行选择,但是他们也可以选择过滤器中的“全部”,基本上只是使查询不过滤该结果

使用基本WHERE方法,查询如下所示

$query = ("SELECT * FROM user WHERE userid = '$userid' AND department = '$department'");

我如何调整它,使过滤器返回该特定过滤器的所有结果?因为在php中编写一堆if-else语句看起来很笨重。

使用Switch语句-php.net/manual/en/control-structures.Switch.php‎使用Switch语句-php.net/manual/en/control-structures.Switch.php‎
$expected_filters = array(
  // 'mysql_column'=>'php_variable',
  'userid'=>'userid',
  'department'=>'department',
);


$final_filters = array();

foreach ($expected_filters as $k => $v) {
  if (isset($_POST[$v]) && trim($_POST[$v])) {
    $final_filters[] = sprintf("%s= '%s'", $k, $v);      
  }    
}

$where = '';

if (count($final_filters)>0) {
    $where = implode(' AND ', $filter);
    $where = ' WHERE ' . $where;
}

$query = ("SELECT * FROM user $where");