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