Допустим в БД 2 колонки - name и sname (имя и фамилия). Если я пишу в поле поиска "Владислав", то он найдет все строки, в которых в колонке "имя" есть "Владислав". Поиск выполняется таким запросом:
$query = "SELECT * FROM clients WHERE name LIKE '%$q%' OR sname LIKE '%$q%'";
$q - в ней хранятся ключевые слова
В колонке sname есть "Безенсон" и если в поиск писать "Владислав Безенсон", то ничего таким способом не найдет. Как искать по нескольким ключевым словам в разных колонках?
Заранее спасибо!
Тут либо так
$search = explode(" ", $str);
foreach($search as $word){
$sql[] = 'name LIKE %'.$word.'%';
$sql[] = 'sname LIKE %'.$word.'%';
}
$sql = 'SELECT * FROM clients WHERE '.implode(" OR ", $sql);
либо регулярные выражения с помощью RLIKE (присущий только Mysql)
$search = str_replace(" ","|",$str);
$sql = 'SELECT * FROM clients WHERE name RLIKE "'.$search.'" OR sname RLIKE "'.$search.'"';
SELECT _field1_, _field2_ FROM _your_table_ WHERE
MATCH (_field1_) AGAINST ('_text_' IN BOOLEAN MODE)
Надо, чтобы каждое слово запроса было параметром в sql
запросе; передавать массив запрос в like in
( 'param1', ..... ).
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Можно удалить дубли из массива и параллельно записывать, сколько дублей было удалено в отдельный массив?
Через OpenServer запускаю PHPMyAdmin, создаю базу MySQL и таблицу, сохраняю