【发布时间】:2016-10-16 22:09:38
【问题描述】:
我有一个从 PHP 查询的简单 MySQL 数据库。我有一个用户通过表单输入了一些约束,然后想要根据约束从 SELECT 查询中返回结果。当使用这两个约束时,我所拥有的就是工作。但是,如果用户未指定其中一个约束,则 SELECT 查询不会返回任何结果,我认为这是因为它将约束变量视为空。
如果 SELECT 查询不为空,如何让它使用约束,但如果它为空则忽略它?
这是我之前尝试过的,但它不起作用。我想我可以测试空并使用 OR 来忽略它。
$query="SELECT * FROM food_items
WHERE (type IN ('$foodtypes') OR ('$foodtypes') > '')
AND ('$budget' > '' OR cost <= ('$budget'))
";
在本例中,类型和成本是数据库中的字段,$foodtypes 和 $budget 是取自用户输入的变量。
谢谢
【问题讨论】:
-
动态构建查询,只查询传入的值。您似乎也对 SQL 注入持开放态度。应该使用参数化查询。
-
你可能打算这样做
'$budget' = '' OR cost <= ('$budget')(对于食物类型也是如此)。 (注意 = 而不是 >。) -
注意:不要使用
constraint这个词:它在SQL中有不同的含义。