簡體   English   中英

PHP搜索引擎-搜索多個關鍵字

[英]PHP Search Engine - Search for multiple keywords

我的搜索引擎有以下代碼:

    if(isset($_POST['search']))
    {
        $search = $_POST['search'];
        $terms = explode(",", $search);
        $projectlistquery = "
            SELECT project.accid, customer.custid, projectid, project.datefrom, custnamecode, dateto, daluur, project.gebruikersid, gebruikers.gebruikersid, 
            type, typeid, typename, custsurname, custmidname, custforename, acc1cust, acc2date, acc3nrofproj, acc4user, project.crew, project.jobinstr, project.projectinfo, usersurname, usermidname, userforename
            FROM project
                INNER JOIN type on project.type = type.typeid
                INNER JOIN customer on project.custid = customer.custid
                INNER JOIN accountingcode on project.accid = accountingcode.accid
                INNER JOIN gebruikers on project.gebruikersid = gebruikers.gebruikersid         
            WHERE
        ";
        $i = 0;
        foreach ($terms as $each) 
        {
            if ($i++ > 0) 
            $projectlistquery .= ' OR ';

            $projectlistquery .= "concat(custsurname, custforename, custmidname, custpostal, custphone1, custphone2, custfax, custnamecode, acc1cust, acc2date, acc3nrofproj, acc4user, typename, usersurname, usermidname, userforename) LIKE '%$each%' ";
        }
        $projectlistquery .= " ORDER BY projectid ";
    }
    else
    $projectlistquery= "    // query to show all records.

現在,這對於搜索1個鍵完全正常。

如果我搜索一個名稱:Hans van Meulen,它將顯示所有帶有Hans的名稱,所有帶有“ van”和Meulen的名稱。 因此,如果我的數據庫中有Dude van Berkel,也會顯示他。 我想一起搜索3個字符串。

使用IMPLODE可以實現嗎? $ terms = implode(“,”,$ search); 會在以下位置返回MySQL語法錯誤:“ ORDER BY projectid”。
還是我必須調整我的SQL?

您只需刪除explode(",", $search); 以便您的搜索字符串完整無缺。 您現在正在做的基本上是將其分解以搜索每個單詞。 這將使您剩下“ Hans van Meulen”作為搜索字符串。

暫無
暫無

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

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