0
我有一个简单的MySQL数据库,我从PHP查询。我有一个用户通过表单输入一些约束,然后希望基于约束返回SELECT查询的结果。当使用两个约束条件时,我所拥有的都在工作。但是,如果用户没有指定其中一个约束,那么SELECT查询不会返回任何结果,我认为这是因为它将约束变量视为空。如何忽略SQL SELECT查询中的空约束
如何获得SELECT查询使用约束如果它不是空的,但如果它为空忽略它?
这是我早些时候尝试的,但它不工作。我认为我可以测试空白并使用OR来忽略它。
$query="SELECT * FROM food_items
WHERE (type IN ('$foodtypes') OR ('$foodtypes') > '')
AND ('$budget' > '' OR cost <= ('$budget'))
";
在这个例子中,类型和成本是在数据库字段和$ foodtypes和$预算是来自用户的输入取变量。
感谢
动态构建查询并仅查询传入的值。您似乎也开放给SQL注入。应该使用参数化查询。 – chris85
,你可能打算做''$预算'=''或成本<=('$预算')'(和foodtypes一样)。 (请注意=而不是>) – Rik
注意:不要使用“constraint”这个词:它在SQL中有不同的含义。 – wildplasser