【问题标题】:Searching in database from a form returning empty input从返回空输入的表单中搜索数据库
【发布时间】:2013-02-27 21:25:31
【问题描述】:

我想使用表单填写的某些字段在我的数据库中进行搜索 但如果某些字段为空,我不想包含它们 哪种查询可以帮助我实现这一目标? 目前我正在使用如下查询:

 Select * from DATABASE where COLUMN='form_input';

但由于我的表单将返回空,它会尝试选择具有空条目的行,但我希望这次查看数据库中所有行的结果,即我想通过 COLUMN='form_input' 使过滤器无效

【问题讨论】:

    标签: database forms search string


    【解决方案1】:

    由于我们不了解您的服务器端脚本语言 - 伪代码应该是 -

    if(request['form_input']!=null)
        Select * from DATABASE where COLUMN='form_input';
    else
        Select * from DATABASE;
    

    另外,如果 form_input 有很多字段,那么我们可以设计 我们的代码类似于 -

    String wherequery = "";
    
    if(request['form_input1']!=null)
    {
        wherequery = wherequery + " COLUMN='form_input1' ";
    }
    if(request['form_input2']!=null)
    {
        wherequery = wherequery + " And "
        wherequery = wherequery + " COLUMN='form_input2' ";
    }
    if(request['form_input3']!=null)
    {
        wherequery = wherequery + " And "
        wherequery = wherequery + " COLUMN='form_input3' ";
    }
    ....
    And so on
    ....
    
    
    String selectQuery = "";
    if(wherequery == "")
    {
           selectQuery = "Select * from TABLE";
    }
    else
    {
           selectQuery = "Select * from TABLE where" + wherequery ;
    }
    
    execute (selectQuery);
    

    请注意我们在这里使用pseudo code。我们可以对每个不为空的输入进行表单输入和连接查询。

    如果我们发现连接的字符串是空白字符串,我们将选择整个表。

    否则

    我们将使用 where 子句查询进行选择。

    希望对您有所帮助。

    【讨论】:

    • 是的,这可以工作,但问题是表单将包含多个这样的列条目,并且为每种情况设计这样的 if else 结构将非常复杂。例如 2 个条目 4 个可能,3 个条目 8 个可能。还有其他出路吗??
    • 谢谢,这个可以正常工作,除非它需要稍作修改,以防 form_input1 为空 whrrequery 将为空,因此必须处理并添加额外的嵌套 if-else 语句谢谢!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    • 2017-04-03
    • 2017-08-21
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多