PHP搜索引擎 - 搜索多个关键字



我为搜索引擎有此代码:

    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个字符串。

这是可以实现的吗?$ TERM =激发(",",$ search);但是,返回一个MySQL语法错误,但是:" by ProjectID"。
还是我必须调整我的SQL?

您只需删除explode(",", $search);零件,以使您的搜索弦完整。您现在正在做的事情基本上是将其拆开以搜索每个单词。那应该给您带来"汉斯·范·穆伦"作为搜索字符串。

最新更新