2012-10-22 228 views
1

我有這樣的代碼爲我的搜索引擎: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個鍵完全正常。

如果我搜索了一個名字:漢斯·範Meulen的,它顯示了漢斯的所有名稱,在它和Meulen的「麪包車」的所有名稱。所以如果我的數據庫中有Dude van Berkel,他也會顯示出來。我想一起搜索3個字符串。

這是achieveable與破滅? $ terms = implode(「,」,$ search);但是,在'ORDER BY projectid'中返回MySQL語法錯誤。
還是我必須調整我的SQL?

回答

1

,使您的搜索字符串是完整的你只是刪除explode(",", $search);部分。你現在正在做的事情基本上是把它拆開來搜索每一個字。 這應該給你留下「Hans van Meulen」作爲搜索字符串。

+0

感謝。現在我刪除它,但是我在'ORDER BY projectid'中得到了與語法相同的錯誤。我刪除了$條款var和取代的foreach($條款...)與($搜索另存爲...) –

+0

看起來應該只要搜索詞是正確的格式工作。嘗試刪除ORDER BY投影周圍的空格 – Alex