Поиск по одному слову работает отлично. Мне бы тоже хотелось, чтобы сработали два или более слов.
До сих пор я дошел до этого, и результаты были таковы, если я ищу несколько слов:
SELECT id, title, tag, type
FROM table WHERE **AND** p.id LIKE '%flower%' OR title LIKE '%flower%' OR tag LIKE '%flower%' OR type LIKE '%flower%'
AND p.id LIKE '%floral%' OR title LIKE '%floral%' OR tag LIKE '%floral%' OR type LIKE '%floral%'
ORDER BY title
Как правильно использовать AND , чтобы при поиске более одного слова я не получал лишнего AND в своем коде.
Есть ли более эффективный способ?
if (count($error) < 1) {
$searchSQL = "SELECT id, title, tag, type
FROM table
WHERE ";
$searcheach = explode(" ", $searchTerms);
foreach($searcheach as $searchword) {
//if more than one word do this else do that
if(strpos(trim($searchTerms), ' ') !== false) {
$searchSQL .= "AND p.id LIKE '%{$searchword}%'
OR title LIKE '%{$searchword}%'
OR tag LIKE '%{$searchword}%'
OR type LIKE '%{$searchword}%' ";
}
else {
$searchSQL .= "p.id LIKE '%{$searchword}%'
OR title LIKE '%{$searchword}%'
OR tag LIKE '%{$searchword}%'
OR type LIKE '%{$searchword}%' ";
}
}
$searchSQL .= "ORDER BY title";