如何忽略SQL SELECT查询中的空约束

时间:2016-10-16 22:09:39

标签: php mysql

我有一个简单的MySQL数据库,我正在从PHP查询。我有一个用户通过表单输入一些约束,然后想要根据约束从SELECT查询返回结果。当使用两个约束时,我所拥有的是工作。但是,如果用户未指定其中一个约束,则SELECT查询不返回任何结果,我认为这是因为它将约束变量视为空。

如果SELECT查询不为空,如何让SELECT查询使用约束,但如果它是空的则忽略它?

这是我之前尝试的但是没有用。我以为我可以测试为空并使用OR来忽略它。

$query="SELECT * FROM food_items 
WHERE (type IN ('$foodtypes') OR ('$foodtypes') > '') 
AND ('$budget' > '' OR cost <= ('$budget')) 
"; 

在此示例中,类型和成本是数据库中的字段,$ foodtypes和$ budget是从用户输入中获取的变量。

由于

1 个答案:

答案 0 :(得分:0)

我认为你应该根据约束的值不同地构建你的查询:

$query = "SELECT * FROM food_items WHERE " .
   ($foodtypes != "" ? "type IN ('$foodtypes')" : "TRUE") . " AND " .
   ($budget ? "cost <= $budget" : "TRUE") . " AND " .
.. and so on ..

安全说明:在使用之前始终转义SQL字符串(请参阅mysqli_real_escape_string)。