簡體   English   中英

有沒有一種方法可以查詢一個MySQL數據庫兩次,並將第二個查詢的結果添加到與第一個查詢的結果相同的數組中?

[英]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?

我在這里按名稱搜索數據庫中的用戶。 我有preg_split()尋找名字和姓氏之間的空間以將它們分開並分別搜索名稱,但是我想對其進行設置,以便如果用戶只輸入名字或姓氏,它將搜索輸入的單個名稱的“ first_name”和“ last_name”字段。 “ Shannon Phillips”將在firstname中搜索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'].'`');
        }   

}

為什么不使用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'].'`');
    }   

您可以使用union ,但是在這種情況下,您可以使用'OR'將兩個查詢合並為一個:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM