検索エンジン用に次のコードがあります。
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); ただし、'ORDER BY projectid' で MySQL 構文エラーを返します。
または、SQL を調整する必要がありますか?