На главную Статьи Функции

Поиск на PHP по базе MySQL (оператор LIKE)




Реализовать полноценный поиск по сайту таким способом конечно весьма сложно, но поиск по каталогу продукции и т.п. организовать с помощью запроса SQL весьма несложно.

Итак. Простой запрос для поиска по определенным столбцам будет выглядеть так:

$query1 = mysql_query("SELECT * FROM table WHERE some_field LIKE '$query_text'");

А теперь по пунктам. С оператором SELECT вы уже знаком, если нет, можно почитать здесь. Имя таблицы, из которой производится выборка table. some_field – название поля (столбца) таблицы table. '$query_text’ – текст поискового запроса, который пользователь ввел в форме для поиска. Ну вот, это самый простой пример организации поиска по базе MySQL. Однако, иногда необходимо произвести поиск не по определенному полю, а по всей таблице. Решается такая задача тоже довольно просто. Первым шагом необходимо извлечь названия всех столбцов таблицы table:

$query2 = mysql_query("SHOW columns FROM table");

а дальше при помощи разбиения запроса  $query на массив функцией mysql_fetch_assoc() и цикла while перебираем все столбцы нужной таблицы:

while($tbl=mysql_fetch_assoc($query2))
{
$query2 = mysql_query("SELECT * FROM table WHERE ".$tbl['Field']." LIKE '$query_text'");
/* А здесь уже выводятся результаты поиска по отдельным столбцам */
}

Обратим внимание на элемент массива $tbl[‘Field’] – это и есть название столбца таблицы. Также полезным будет ввести ограничение на тип столбцов, если вы хотите организовать поиск только по тексту. Для этого с помощью оператора if можно поставить условие:

if ($tbl['Type']=='varchar(255)')
{
/*varchar(255) – тип ячейки, в скобках указана длина (lenght) поля varchar*/
/*Производим поиск*/
}

Или так:

if($tbl['Type']=='text')
{
/*Производим поиск*/
}

Или оба варианта одновременно:

if($tbl['Type']=='text' or $tbl['Type']=='text')
{
/*Производим поиск*/
}

Конечно это не все, также можно организовать и поиск по всем таблицам базы данных, для этого понадобится вначале извлечь имена всех таблиц в базе данных.



© 2010-2024 При использовании материалов ссылка на сайт www.webchaynik.ru обязательна

обратная связь