LIKE для однословного поиска для многословного лучше делать поля FULLTEXT
https://dev.mysql.com/doc/refman/8.0/en/fulltext-n...
потом по ним поиск
если совсем некрасиво, но нужно, то бить по словам и потом собирать запрос как-то так:
if ($search){
$words = explode(' ', $search);
foreach ($words as $word) {
$search = $db->Quote('%'.$db->escape( $word, true).'%');
$conds1[] = ' prod.title LIKE '.$search;
$conds2[] = ' a.adres LIKE '.$search;
$conds3[] = ' prod.fio LIKE '.$search;
}
$query1 = implode(' OR ', $conds1);
$query2 = implode(' OR ', $conds2);
$query3 = implode(' OR ', $conds3);
$query->where('( '.$query1.' ) OR ( '.$query2.' ) OR ( '.$query3.')');
}
или можно REGEXP функцию по такому же принципу написать