Допустим в БД 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', ..... ).
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Можно удалить дубли из массива и параллельно записывать, сколько дублей было удалено в отдельный массив?
Через OpenServer запускаю PHPMyAdmin, создаю базу MySQL и таблицу, сохраняю