当前位置: 首页 > 知识库问答 >
问题:

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

张茂勋
2023-03-14

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

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

这是我之前试过的,但不起作用。我想我可以测试它是否为空并使用它,或者忽略它。

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

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

谢啦

共有1个答案

龙俭
2023-03-14

我认为您应该根据约束的值以不同的方式构建您的查询:

$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)。

 类似资料:
  • 和使用它的字段: 当使用Solr分析工具时,一切看起来都很好。 查询部分如下: null null

  • 问题内容: 什么是运行查询以便忽略字段中的空格的最佳方法?例如,以下查询: 将找到以下条目: 我正在使用php或python,但我认为这没有关系。 问题答案:

  • 问题内容: 我正在寻找一种创建忽略空格的学说查询的方法。我尝试用replace,但是我一直都收到 预期的已知功能,得到“替换” 我的查询看起来像: 问题答案: 好的,我编写了一个替换DQL函数。 接下来在app / config.yml中,我添加: 最后,我在控制器中创建了一个DQL查询: 最有趣的是,“引号”非常重要。这意味着您可以在select,from,setParameter和orderB

  • 问题内容: 我需要从第二个表中选择一些行,并将它们连接成逗号分隔的字符串。除一个问题外,查询效果很好-它始终选择所有行,并忽略LIMIT。 这是我的查询的一部分,该查询获取该字符串并忽略LIMIT: 完整查询: 问题答案: LIMIT子句限制最终结果集中的行数,而不是用于在GROUP_CONCAT中构造字符串的行数。由于您的查询在最终结果中仅返回一行,因此LIMIT无效。 您可以通过使用LIMIT

  • Liquibase版本:3.3.2 DB平台:SQL服务器2014 驱动程序:jdbc 4.0 我使用GenerateChangeLog命令从我的数据库生成一组新的部署脚本。许多表都没有NULL列,但当我测试Liquibase部署(更新)列时,它们都可以为空。这导致PK创建失败。 样本更改集: 有什么建议吗?

  • 我有Solr 5.3.1,需要查询除某些字段之外的所有字段(我需要在某些字段中搜索而不是以这种方式检索字段[/?q=query&fl=field1,field2,field3]) 2.[以下解决方案有效,但需要更多时间] 3.我在data-config.xml中设置了indexed=“false”,它只忽略此字段中的搜索,但是当我搜索所有字段http://localhost:8983/solr/t