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

Тема в разделе "Базы данных", создана пользователем web-investor, 16 мар 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. web-investor

    web-investor

    Регистр.:
    19 окт 2007
    Сообщения:
    498
    Симпатии:
    109
    Здравствуйте!

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

    Подскажите, пожалуйста, каким образом можно осуществить поиск по базе данных?
     
  2. maxdam

    maxdam Читатель

    Заблокирован
    Регистр.:
    16 ноя 2008
    Сообщения:
    157
    Симпатии:
    13
    PHP:
    $result sql_query("SELECT поля  FROM diplom WHERE поля LIKE '%$query%' ORDER BY поле ASC"$dbi);
    подойдет?
     
    web-investor нравится это.
  3. balcon

    balcon Создатель

    Регистр.:
    13 ноя 2008
    Сообщения:
    39
    Симпатии:
    7
    Если есть phpMyAdmin то вообще легко. Нужно сделать запрос в самом phpMyAdmin, он покажет последнии операции в SQL формате, я поначалу всегда так делал
     
    web-investor нравится это.
  4. Igor123

    Igor123 Постоялец

    Регистр.:
    14 июн 2008
    Сообщения:
    116
    Симпатии:
    13
    поставь phpmyadmin
    и делая там запросы - ты сможешь их увидеть и догнать что тебе нужно
    сам по началу так делал.

    п.с. проверяй входящие данные чтобы не хакнули.
     
    web-investor нравится это.
  5. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    312
    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%';
     
    web-investor нравится это.
  6. web-investor

    web-investor

    Регистр.:
    19 окт 2007
    Сообщения:
    498
    Симпатии:
    109
    Ок, большое спасибо за оперативные ответы.

    А можно так записать:
    select * from 'news' whrer 'text' like $search;
    Т.е. чтобы перменная $search попадала в запрос, из формы на сайет?
     
  7. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    PHP:
     select from `newswhere `textlike '%"'.$_POST['search'].'"%' 
    может немного промахнулся с кавычками ..очень мелкие в форме..
    не забыть обработать $_POST['name'] ... и расставить индексы в таблице на полях поиска..
     
  8. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    312
    Что то вроде
    PHP:
    $query="select * from `news` where `text` like '%".addslashes($search)."%'";
     
  9. abzac

    abzac Создатель

    Регистр.:
    25 окт 2008
    Сообщения:
    24
    Симпатии:
    3
    только перед обработкой переменной на sql-инъекцию, проверь настройки magic_quotes_gpc, а то получишь \\\\\'
     
  10. pavel012007

    pavel012007

    Регистр.:
    12 мар 2008
    Сообщения:
    210
    Симпатии:
    117
    Если требуется чуть более изощренный поиск - например, слов запроса которые начинаются с начала определенного слова в тексте - советую присмотреться к REGEXP (он же RLIKE). Работает помедленнее, конечно, но стоит того. Например, REGEXP '[[:<:]]ремонтная мастерская' найдет фразы с "ремонтная мастерская", но "не увидит" фразы "авторемонтная мастерская".
     
Статус темы:
Закрыта.