От автора: хорошо натренированный пес всегда возьмет след! Но даже он не поможет найти нужную информацию в MySQL. Сегодня мы рассмотрим, как происходит поиск базе PHP. И как в этом деле обойтись без друга человека.
Как искать?
В одном из прошлых уроков мы рассматривали вывод данных в MySQL. Я рассказал вам, что для этого используются запросы SQL. Точнее, только одна команда – SELECT. Но в том раз я кое о чем умолчал: ее можно использовать не только для выборки данных и сортировки, но и для поиска.
Чтобы найти конкретную строку, отвечающую заданному условию, применяется оператор where. Для демонстрации всех примеров предлагаю перейти в phpMyAdmin.
Предположим, что нужно осуществить с помощью PHP поиск в базе MySQL. Нам надо найти строку, в которой значение столбца Name равно Aruba. Чтобы «отсеять» эту строку из всей таблицы, следует составить правильный запрос.
Вспоминаем все вышесказанное и принимаемся за дело. Первоначально разбираемся с условиями, которым должна соответствовать найденная строка. И со столбцами, значение которых должен вернуть запрос.
Сказано, что в искомой строке значение столбца Name должно быть равно указанному. Это условие мы пропишем после оператора where. Все ли данные из этой строки нужно отображать? Предположим, что да:
1 |
SELECT * FROM `country` where name='Aruba'; |
Усложняем запросы
Но не единым запросом живет MySQL :). У данной СУБД этих запросов, хоть завались! Можно и «завалиться», если не знать, как их правильно составлять. Тогда PHP поиск в базе данных превратится в настоящий кошмар. Но так как мы не любим ужастики, то рассмотрим еще несколько запросов для нахождения искомого в БД MySQL.
Если требуется вывести не все значения строки, тогда в команде прописываем нужные. Пример:
1 |
SELECT name,population FROM `country` where name='Aruba'; |
После SELECT мы указали те столбцы, значения которых нам интересны. Но в двух предыдущих примерах поиск происходит только по строковым значениям. А в БД могут храниться и другие типы данных. Например, числовые:
1 |
SELECT name, population FROM `country` where population=103000; |
Я немного «перекроил» предыдущий запрос, задав в качестве условия значение числового столбца. Хотя оба запроса вернут один и тот же результат. Доказательство:
Кроме этого можно расширить рамки сортировки, и вывести строки таблицы, в которых числовое значение меньше или больше заданного. Например, выведем страны, где «популяция» больше 103000:
1 |
SELECT name, population FROM `country` where population>103000; |
Или больше:
1 |
SELECT name, population FROM `country` where population<103000; |
Но в обоих случаях мы теряем искомую строку – родимую Aruba :). Чтобы включить ее в результат выборки, следует использовать другой оператор сравнения. Больше или равно:
1 |
SELECT name, population FROM `country` where population>=103000; |
Меньше или равно:
1 |
SELECT name,population FROM `country` where population<=103000; |
Благодаря этим оператором родимая Aruba никуда из выборки не делась:
Пока все. Теперь я уверен, что ваш поиск по базе данных MySQL и PHP увенчается успехом, и для этого не потребуется опытная собака-ищейка. Хотя мне, наверное, понадобится… Пока писал материал, мой «домашний друг человека» стащил со стола вкуснейший бутерброд с колбасой и ветчиной. Но деваться некуда – с друзьями нужно делиться :).