我有一个简单的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是从用户输入中获取的变量。
由于
答案 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)。