В данном уроке мы разберем такой важный вопрос, как выборка данных из таблицы базы данных MySQL. Из урока Вы узнаете, какой оператор отвечает за выборку данных из таблицы БД, на практике научитесь с ним работать. Опять же, выборку из таблицы можно делать по-разному, например, выводить все имеющиеся в таблице поля или, наоборот, только некоторые из них, делать сортировку по алфавиту и т.д. Об этих тонкостях я также расскажу в этом уроке.
Итак, для извлечения строк из таблицы БД используется оператор Select. Давайте рассмотрим как с ним работать на примерах. Допустим, у нас имеется база данных «Фирма» (baza_firma) и таблица «Сотрудники» (sotrudniki). Таблица представлена ниже:
Для начала подключимся к MySQL:
<?php $db = mysql_connect("localhost","admin","12345"); /*Подключение к серверу */ mysql_select_db("baza",$db); /*Подключение к базе данных на сервере*/ ?>
Подробнее о подключении к MySQL из PHP можно посмотреть здесь.
Теперь рассмотрим примеры:
Пример 1. Вытащить из базы данных все поля, то используется следующий код:
$result = mysql_query("SELECT * FROM sotrudniki",$db);
Где звездочка указывает, что все поля должны быть извлечены из таблицы.
Пример 2. Получить точные данные, например, фамилию всех пользователей в базе данных с определенным именем (имя будет занесено в переменную $name):
$result = mysql_query("SELECT surname FROM sotrudniki WHERE name='$name'",$db);
Где — name='$name' – поле name равняется переменной $name.
Пример 3. Отсортировать результат по каким-то параметрам, например, по имени:
$result = mysql_query("SELECT * FROM sotrudniki ORDER BY name ",$db);
Где — ORDER BY name – отсортировать по имени.
Пример 4. Отсортировать результат в обратном порядке:
$result = mysql_query("SELECT * FROM sotrudniki ORDER BY name DESC ",$db);
Где — DESC – сортировка в обратном порядке.
Пример 5. Вытащить определенное количество полей из базы данных, например, четыре:
$result = mysql_query("SELECT * FROM sotrudniki ORDER BY id LIMIT 4 ",$db);
Где — LIMIT 4 – указывает на то, что выведутся из таблицы только четыре первых результата.
Это были небольшие примеры выборки данных из таблицы БД. Теперь давайте рассмотрим, как преобразовать полученный результат в массив для дальнейшего использования, к примеру, для вывода результата на экран. Для этого используется функция mysql_fetch_array (), которая имеет следующий вид:
$myrow = mysql_fetch_array($result);
Пример 6. Вывести строки под номером 5 из таблицы «sotrudniki».
$result = mysql_query("SELECT * FROM sotrudniki WHERE id='5'",$db); $myrow = mysql_fetch_array($result); echo "Сотрудник N – ".$myrow['id']."";
Пример 7. Выводить все данные из таблицы «sotrudniki» до тех пор пока они не закончатся:
$result = mysql_query("SELECT * FROM sotrudniki",$db); $myrow = mysql_fetch_array($result); do { echo "Сотрудник N – ".$myrow['id']."<br>"; echo $myrow['name']."<br>"; echo $myrow['surname']."<br>"; echo $myrow['dol']."<br>"; } while ($myrow = mysql_fetch_array($result));
Где — id, name, surname, dol — это то, что будет выведено на экран.
Пример 8. Используем функцию вывода «printf» и маркеры «%s».
$result = mysql_query("SELECT * FROM sotrudniki",$db); $myrow = mysql_fetch_array($result); do { printf ("Сотрудник N - %s<br>%s<br>%s<br>%s<br><br>",$myrow['id'],$myrow['name'],$myrow['surname'],$myrow['dol']); } while ($myrow = mysql_fetch_array($result));
Маркеры ставятся в места, где необходимо выводить данные из таблицы. Таким образом, на место первого маркера выведется «id», на место второго «name», на место третьего «surname», и на место четвертого «dol».
Вот по такому принципу работает оператор выборки Select в СУБД MySQL. Надеюсь, урок получился интересным и понятным. В любом случае, если по уроку имеются какие-либо вопросы, всегда можно задать их в комментариях.
Приветствую!
Урок супер, по сравнению с одним десятков увиденных уже точно! Наконец то я разобрался с этими запросами и выводами из БД.
НО!! Я нашел ошибки в ваших примерах, они то и отняли у меня 2 часа сна))
Косяк в примере 6, именно такой выбор и нужен был, как же я долго втыкал что именно он не работает, а остальные работают, позже заметил что между SELECT и FROM есть 2 пробела, а звёздочки между ними нет!!!
Ещё раз спасибо!
Всем удачи.
И правда ошибочка вышла. Андрей, спасибо, что заметили!:)
Очень интересная статья. Сейчас делаю сайт и выборку из базы данных. Прочитал с удовольствием. Текст доступен к пониманию.