如何根据一个或多个条件从表格中选择数据?

时间:2016-01-10 14:38:25

标签: php mysql

我正在使用MySQL / PHP,我想根据一个或多个条件从表中选择数据,但使用最小的if语句。 例如,如果我有一个表

Students | Register | End    | Points
Mark     | 14/1     | 18/6   | 14 
Dina     | 18/12    | 19/2   | 1 
Karl     | 1/1      | 1/2    | 9 

我有一个表单,用户可以根据他选择设置的数据,根据一个或多个条件(注册,结束,点)查找数据。

如果他只设置了一个标准,可以在日期之后说出,他将根据该日期获得所有结果。

如果他设置两个或三个条件(注册和结束)或(结束和点数)或甚至(注册和结束和点数),他将根据所有条件联合起来得到结果,不仅是其中一个或全部他们分开。

当我在条件之间使用 AND 时,如果用户没有设置其中一个条件,则返回空查询。

当我在条件之间使用 OR 并且用户选择多个条件时,它会返回数据但是根据每个条件分别不加入数据。

我试过的查询:

SELECT * FROM table WHERE Register >= '$choice1' OR End <= '$choice2' OR Points = '$choice3'; 

SELECT * FROM table WHERE Register >= '$choice1' AND End <= '$choice2' AND Points = '$choice3'; 

最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

使用php构建你的WHERE子句,如下所示:

$condition = '';

if($choice1 != '')
  $condition .= "Register >= '$choice1'";

if($choice2 != '')
  $condition .= ($condition != '' ? " AND " : '') . "End <= '$choice2'";

if($choice3 != '')
  $condition .= ($condition != '' ? " AND " : '') . "Points = '$choice3'";

$sql = "SELECT * FROM table" .($condition != '' ? " WHERE $condition;" : ";");