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 키를 검색하기위한 완전히 잘 작동합니다.
한스 반 뮬런 (Hans van Meulen)은 한스의 모든 이름을 보여 주며 모든 이름은 반 (van)과 므렌 (Meulen)으로 표시됩니다. 그래서 내 데이터베이스에 Dude van Berkel이 있다면, 그는 또한 나타납니다. 그리고 나는 3 개의 문자열을 함께 찾고 싶습니다.
IMPLODE로 달성 할 수 있습니까? $ terms = implode (",", $ search); 하지만 'ORDER BY projectid'에서 MySQL 구문 오류를 반환합니다.
또는 SQL을 조정해야합니까?
감사합니다. 이제 제거했지만 'ORDER BY projectid'구문에 대한 동일한 오류가 발생합니다. $ terms var을 제거하고 foreach ($ terms as ...)를 ($ search as ...)로 바 꾸었습니다. –
검색어가 올바른 형식 인 한 작동해야합니다. ORDER BY 프로젝트 ID 주위의 공백을 제거하십시오. – Alex