我正在使用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';
最好的方法是什么?
答案 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;" : ";");