【问题标题】:SQL query where filter = *SQL 查询 where filter = *
【发布时间】:2013-05-21 23:49:27
【问题描述】:

在 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‎

标签: php sql filter where


【解决方案1】:
$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");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 2015-10-30
    • 2021-12-31
    • 2021-02-11
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多