【问题标题】:how to select entries from database for particular fields entered in php如何从数据库中为在 php 中输入的特定字段选择条目
【发布时间】:2023-03-04 07:35:07
【问题描述】:

我有一个 php 页面,它从用户那里获取 startdate、enddate、hotelname、city、price 和 type 的值。 现在我需要检查我的数据库中只有用户输入的值。那可能吗?对于留空的任何条目,不应用相应的条件(例如,如果城市留空,则考虑所有城市)。 就像如果用户只输入酒店名称,那么我需要从 hname = 酒店名称的酒店中选择 *。

如果我继续检查所有可能的条件集,那么可能会有 63 种组合!那么有什么出路吗?请帮忙!谢谢。

【问题讨论】:

  • 我是否正确理解您正在构建某种搜索表单,允许用户使用不同的搜索条件在您的数据库中搜索条目?而且您不知道如何进行包含表单中所有非空字段的数据库查询?
  • 你试过什么?您当前的代码是什么?你究竟在哪里卡住了?
  • 是的。用户可以使用任意数量的搜索条件进行搜索,更清楚的是用户可以使用一个搜索条件或全部 6 个搜索条件进行搜索!如何检查用户输入了多少搜索条件并在我的数据库中搜索它们?
  • 我尝试只考虑 3 个搜索条件,但如果(!hotelname)if(!city)if(!type)有 7 种可能的组合..else...else.. .else...所以要检查 6 个搜索条件,它会太长而且不合逻辑.. 那么有没有更好的解决方案呢?

标签: php oracle10g oracle11g


【解决方案1】:

您应该编写一个循环输入变量并查找有效列名的方法,而不是单独处理每个输入。然后确保在 SQL(mysqli、PDO)中使用准备好的语句。

要检查特定的输入变量,您应该执行

if (isset($_POST['var']) && !empty($_POST['var']))

如果每个字段都需要特别注意或需要单独的数据库表,那么您很可能需要单独处理每个字段。

这最终取决于您的需求。但根据我的经验,总有一种方法可以以编程方式进行。

【讨论】:

    【解决方案2】:

    当您在代码中构建查询时,仅包含其中具有值的项目。

    您不是在动态构建查询吗?

    【讨论】:

    • 不查询是静态的,只有动态输入的值!
    • 那是你的问题。除了动态构建的查询之外,没有人会用其他任何东西来做这件事。为什么要使用静态的?
    • 对不起,我不知道如何构建动态查询,因为我是 php 新手。你能指导我从哪里学习构建动态查询吗?或者您是否可以发布任何示例动态查询?
    • 您使用什么来提交查询?您是使用 PDO 还是仅提交原始 SQL?
    • 您是使用准备好的查询还是只提交原始 SQL?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-08
    • 2012-09-06
    • 1970-01-01
    • 2015-02-11
    • 2016-12-10
    相关资源
    最近更新 更多