Как сделать поиск по базе mysql?

Статус
В этой теме нельзя размещать новые ответы.

web-investor

Постоялец
Регистрация
19 Окт 2007
Сообщения
504
Реакции
113
Здравствуйте!

Хочу на своем сайте сделать поиск.
Все данные у меня хранятся в базе.
Т.е. имеется база 'diplom', в этой базе есть таблицы 'news', 'student' и 'univer'. В каждой таблице имеется поле 'text'.

Подскажите, пожалуйста, каким образом можно осуществить поиск по базе данных?
 
  • Заблокирован
  • #2
PHP:
$result = sql_query("SELECT поля  FROM diplom WHERE поля LIKE '%$query%' ORDER BY поле ASC", $dbi);

подойдет?
 
Если есть phpMyAdmin то вообще легко. Нужно сделать запрос в самом phpMyAdmin, он покажет последнии операции в SQL формате, я поначалу всегда так делал
 
поставь phpmyadmin
и делая там запросы - ты сможешь их увидеть и догнать что тебе нужно
сам по началу так делал.

п.с. проверяй входящие данные чтобы не хакнули.
 
select * from `news` where `text` like '%123456%';
select * from `student` where `text` like '%123456%';
select * from `univer` where `text` like '%123456%';

где 123456 - искомое слово

или в одном запросе:
select `text` from `news` where `text` like '%123456%' union select `text` from `student` where `text` like '%123456%' union select `text` from `univer` where `text` like '%123456%';
 
Ок, большое спасибо за оперативные ответы.

А можно так записать:
select * from 'news' whrer 'text' like $search;
Т.е. чтобы перменная $search попадала в запрос, из формы на сайет?
 
PHP:
 select * from `news` where `text` like '%"'.$_POST['search'].'"%' ;
может немного промахнулся с кавычками ..очень мелкие в форме..
не забыть обработать $_POST['name'] ... и расставить индексы в таблице на полях поиска..
 
А можно так записать:
select * from 'news' whrer 'text' like $search;
Т.е. чтобы перменная $search попадала в запрос, из формы на сайет?

Что то вроде
PHP:
$query="select * from `news` where `text` like '%".addslashes($search)."%'";
 
только перед обработкой переменной на sql-инъекцию, проверь настройки magic_quotes_gpc, а то получишь \\\\\'
 
Если требуется чуть более изощренный поиск - например, слов запроса которые начинаются с начала определенного слова в тексте - советую присмотреться к REGEXP (он же RLIKE). Работает помедленнее, конечно, но стоит того. Например, REGEXP '[[:<:]]ремонтная мастерская' найдет фразы с "ремонтная мастерская", но "не увидит" фразы "авторемонтная мастерская".
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху