我为搜索引擎有此代码:
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);
零件,以使您的搜索弦完整。您现在正在做的事情基本上是将其拆开以搜索每个单词。那应该给您带来"汉斯·范·穆伦"作为搜索字符串。