【问题标题】:Is there a way to query a MySQL DB twice and add the results from the second query to the same array as the results from the first query?有没有办法查询 MySQL DB 两次并将第二个查询的结果添加到与第一个查询的结果相同的数组中?
【发布时间】:2014-02-14 13:33:08
【问题描述】:

我在这里按名称搜索数据库中的用户。我有 preg_split() 寻找名字和姓氏之间的空格以将它们分开并分别搜索名称,但我想设置它,以便如果用户只输入第一个或最后一个,它将搜索输入的单个名称的“first_name”和“last_name”字段。 前任。 'Shannon Phillips' 会在 first_name 中搜索 Shannon,在 last_name 中搜索 Phillips,但如果我只输入 Phillips,我希望它同时在 first_name 和 last_name 中搜索 Phillips。我假设我只会查询数据库两次,并以某种方式将第二个查询的结果附加到第一个查询的末尾。

function nameProcess(){
    if($_SESSION['search_engine_option'] == 'name'){
        $name = preg_split("/[\s,]+/", $_SESSION['search_engine_input']);
        if(empty($name['0'])){
            $first  = db_query('SELECT * FROM {tls_active_applicants} WHERE `first_name` = `'.$name['1'].'`');
            $last   = db_query('SELECT * FROM {tls_active_applicants} WHERE `last_name` = `'.$name['1'].'`');
        }elseif(empty($name['1'])){
            $first  = db_query('SELECT * FROM {tls_active_applicants} WHERE `first_name` = `'.$name['0'].'`');
            $last   = db_query('SELECT * FROM {tls_active_applicants} WHERE `last_name` = `'.$name['0'].'`');
        }   

}

【问题讨论】:

  • 噢。先生,您的问题远远超出了创建数组的功能方面。您的代码似乎很容易受到 sql 注入的影响,使用此代码的任何应用程序都将是不安全的,并且可能会破坏您的数据库。除此之外,您可能应该尝试将数据的检索与该数据的使用分开,通过单独的方法或函数来获取原始数据,然后再对其进行操作。

标签: php mysql


【解决方案1】:

为什么不使用 OR ?

    if(empty($name['0'])){
        $first  = db_query('SELECT * FROM {tls_active_applicants} WHERE `first_name` = `'.$name['1'].'` OR `last_name` = `'.$name['1'].'`');
    }elseif(empty($name['1'])){
        $first  = db_query('SELECT * FROM {tls_active_applicants} WHERE `first_name` = `'.$name['0'].'` OR `last_name` = `'.$name['0'].'`');
    }   

【讨论】:

    【解决方案2】:

    您可以使用union,但在这种情况下,您可以使用“OR”将两个查询合并为一个:

    SELECT * FROM {tls_active_applicants} 
        WHERE `first_name` = `'.$name['0'].'` 
        OR `last_name` = `'.$name['0'].'`
    

    【讨论】:

      猜你喜欢
      • 2015-03-16
      • 2018-03-20
      • 2022-10-07
      • 2017-02-09
      • 2013-11-01
      • 2018-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多