Подписаться на обновления блога?

Да

Нет

Картинка 3D коробки

Узнать больше

895

Вся правда о заработке на блогах

Этот БЕСПЛАТНЫЙ обучающий курс для тех, кто интересуется заработком на блоге.

Данный материал, основанный на опыте известного блогера Александра Борисова, поможет понять, как можно зарабатывать на блоге действительно реальные деньги и как правильно и эффективно монетизировать его.

  • Картинка 3D коробки

    Узнать больше

    895

    Вся правда о заработке на блогах

    Этот БЕСПЛАТНЫЙ обучающий курс для тех, кто интересуется заработком на блоге.

    Данный материал, основанный на опыте известного блогера Александра Борисова, поможет понять, как можно зарабатывать на блоге действительно реальные деньги и как правильно и эффективно монетизировать его.

  • Узнать больше

    899

    Как заработать в интернете продавая информацию

    Этот БЕСПЛАТНЫЙ обучающий курс по заработку в интернете для тех, кто хочет работать, используя свои знания и опыт.

    В данном материале подробно рассказывается как создавать свои информационные продукты для людей и как продавать их через интернет.

  • Узнать больше

    890

    Как заработать чайнику?

    Многие задаются вопросом, как зарабатывать в интернете? Как начать работать на себя, а не на дядю?

    В БЕСПЛАТНОМ видеокурсе "Как заработать чайнику?", вы найдете много ответов на эти вопросы, которые получите от успешного практика в этой области.

  • Узнать больше

    903

    Создать сайт за 1 час!

    Хорошо известно, что для того, чтобы успешно работать в интернете необходим свой интернет-ресурс.

    Из БЕСПЛАТНОГО видеокурса "Как создать сайт за 1 час" вы узнаете, как можно достаточно быстро сделать бесплатный сайт несложным способом с нуля.

  • Узнать больше

    904

    Как начать зарабатывать на партнерских программах

    Работа на партнерских программах является одной из самых популярных видов заработка.

    БЕСПЛАТНЙ видеокурс "Как начать зарабатывать на партнерских программах" поможет вам освоить этот интересный и эффективный способ работы в интернете.

  • Узнать больше

    905

    ИНФОБИЗНЕС по модели Евгения Попова

    Этот БЕСПЛАТНЫЙ обучающий курс предназначен для тех, кто хочет познакомиться с одним из лучших видов заработка в интернете.

    В данном материале на основе своего опыта автор расскажет каким образом следует строить этот бизнес.

  • Узнать больше

    922

    HTML базовый курс

    БЕСПЛАТНЫЙ обучающий курс предназначен тем, кто делает первые шаги в сайтостроении.

    В этом видеокурсе в доступной форме даются основы языка HTML, являющегося незаменимым при составлении веб-страниц.

  • Узнать больше

    924

    CSS базовый курс

    Этот БЕСПЛАТНЫЙ обучающий курс поможет разобраться в вопросах сайтостроения при создании своего сайта.

    В данном видеокурсе подробно и очень доступно даются основы языка CSS, обеспечивающего управление внешним видом веб-страниц.

  • Узнать больше

    926

    Домен и хостинг

    В этом БЕСПЛАТНОМ обучающем курсе рассказывается как разместить в сети свой вновь созданный интернет-ресурс.

    В видеокурсе пошагово разъясняется как купить домен, купить хостинг, загрузить сайт на хостинг и выполнить все необходимые настройки для его правильной работы.

  • Узнать больше

    927

    Фотошоп для начинающих (бесплатная версия)

    Этот БЕСПЛАТНЫЙ обучающий курс будет полезен тем, хочет освоить работу с графическим редактором "Фотошоп".

    В видеокурсе на конкретном примере показывается как создаются изображения и какие при этом используются инструменты.

  • Узнать больше

    929

    Видеосамоучитель GIMP

    Данный видеокурс поможет освоить работу с дизайном сайта при использовании БЕСПЛАТНОГО графического редактора GIMP.

    В нем можно узнать все основные вопросы по работе с редактором, а именно: что такое слои, как с ними работать, как работать с базовыми инструментами и как работать с фильтрами.

Бесплатные видеокурсы!

Хотите узнать как зарабатывать в интернете и как бесплатно сделать сайт для своей работы, ничего не потратив на обучение?

Здесь Вы можете познакомиться с проверенными способами работы в интернете в БЕСПЛАТНЫХ обучающих курсах по заработку и сайтостроению в разделе Бесплатные Сборника видеокурсов.

Вы здесь: Главная → Как сделать сайт → MySQL → Выводим данные из БД MySQL в PHP

Знак папки 2Текущее состояние создаваемого сайта

Свернуть

Знак папки 1 Все статьи cборника "Сделай сайт своими руками с нуля бесплатно"


Автор: / Дата:

Выводим данные из БД MySQL в PHP

Здравствуйте уважаемый посетитель!

В предыдущей статье мы рассмотрели возможность вывода записей MySQL с помощью SQL-запросов. При этом, результаты отображались на странице веб-приложения phpMyAdmin.

Такой способ получения данных полезен для просмотра содержимого БД MySQL, но явно недостаточен для того, чтобы можно было их использовать для работы сайта. В этом случае, вместо приложения phpMyAdmin, требуются другие инструменты.

В сайтостроении для этих целей обычно используют язык программирования PHP, где с помощью модуля MySQLi данные можно извлекать непосредственно в PHP. А, далее с ними работать как с обычными переменными.

Следует отметить, что наиболее часто встречающиеся PHP-функции, предназначенные для вывода данных из таблиц MySQL, по виду возвращаемого результата можно разделить на три варианта:

  • когда результатом выполнения SQL-запроса может быть лишь только одна строка;
  • в случае, если результатом выборки может быть множество строк.
  • при выполнении запроса на проверку наличия записи в таблице по заданному условию.

В первом случае PHP-функцией возвращается одномерный ассоциативный массив, ключами которого будут являться наименования полей таблицы.

В варианте со множеством строк на выходе получается двумерный массив, в котором первый ключ определяет порядковый номер строки из набора, а второй - наименования полей.

В случае поверки наличия записи в таблице, функция возвращает значение переменной типа "bool", где "TRUE" - запись существует, "FALSE" - отсутствует.

При этом, на основе приведенных здесь вариантов PHP-кода можно получать различные функции под конкретные задачи, меняя для этого лишь текст SQL-запроса и соответствующие параметры.

Следует отметить, что для того, чтобы в создаваемых функциях более наглядно была показана связка языков PHP и SQL, во всех рассматриваемых здесь вариантах будут сознательно использованы те же самые SQL-запросы, которые применялись в предыдущей статье Выводим данные из БД MySQL с помощью SQL-запросов.

Таким образом, мы рассмотрим наиболее часто используемые варианты PHP-функций, предназначенных для вывода данных MySQL, и с помощью соответствующих PHP-скриптов перенесем полученные результаты на на экран браузера.

Содержание


  • Вывод одиночной строки (использование одномерного массива)
  • Вывод набора строк по заданному условию (использование двумерного массива)
  • Проверка наличия записи в таблице
  • Исходные файлы сайта

Вывод одиночной строки (использование одномерного массива)


С начала создадим функцию, с помощью которой в PHP получим нужную строку, а затем выведем ее на HTML-страницу.

Для этого, как было ранее сказано, будем использовать тот же самый SQL-запрос, который рассматривался в предыдущей статье, а именно: "SELECT * FROM `url` WHERE `url`='poluchity-skidku'". Только вместо конкретного наименования таблицы "url", одноименного имени поля "url" и его значения "poluchity-skidku" укажем переменные PHP, скажем, "$table", "$column" и "$value", соответственно.

Данные переменные будут являться параметрами создаваемой функции, что позволит в SQL-запросе применять значения, которые будет указаны при ее вызове. Такое использование переменных в параметрах функции сделает ее универсальной для поиска записей в любой таблице. В данном случае с условием, что поиск записи в таблицах будет выполняться всего лишь по одному значению одного поля.

Аналогичные универсальные функции можно составить и для других вариантов условий, что исключит необходимость каждый раз составлять новые скрипты под конкретные задачи.

Кроме того, при создании функции возьмем за основу код, который был составлен для записи данных MySQL в статье Записываем данные MySQL с использованием PHP (рис.9).

Но, теперь будем применять запрос не для ввода, а для вывода данных. К этому добавим также вызов метода "fetch_assoc()" модуля MySQLi PHP для преобразования полученной строки в ассоциативный массив. Для того, чтобы ключами для доступа к значеням его элементов являлись наименования полей таблицы.

После соответствующих преобразований PHP-код функции, в которой будет извлекаться из таблицы первая найденная строка (в нашем случае она единственная), примет следующий вид.

  1. <?php

  2. //----Функция вывода одиночной записи-------------

  3. function getLine($table, $column, $value) {

  4. global $mysqli;

  5. if (!$result = $mysqli->query("SELECT * FROM `$table` WHERE `$column`='$value'")) {

  6. die ('При извлечении записей возникла ошибка: '.$mysqli->errno.' - '.$mysqli->error);

  7. }

  8. return $result->fetch_assoc();

  9. }

  10. ?>

Рис.1 Функция вывода одиночной строки

Если сравнить этот код с предыдущей функцией, то можно увидеть некоторые изменения и дополнения, которые заключаются в следующем:

  • заменено название функции и ее параметры (поз.3) - теперь она обозначается "getLine", а в качестве параметров используются значения переменных "$table", "$column" и "$value";
  • в методе выполнения запроса к базе данных "query" модуля MySQLi PHP (поз.5) теперь применен SQL-запрос на вывод данных с условием, что значение переменной поля "$column" выбранной строки должно соответствовать значению "$value";
  • заменен текст сообщения (поз.6), который выводиться на экран браузера в случае возникновении ошибки при выполнении запроса;

В итоге, с помощью вызова объектом "$result" метода "fetch_assoc()" (поз.8) будет возвращена найденная запись в виде ассоциативного массива.

А теперь содержимое этого массива с помощью PHP-кода перенесем на HTML-страницу. И сделаем это, разместив в начале главной страницы в файле "index.php" следующий PHP-код:

  1. <?php

  2. echo "Проверка вывода одиночной строки:";

  3. $table = "url";

  4. $column = "url";

  5. $value = "poluchity-skidku";

  6. $data_bd = getLine($table, $column, $value);

  7. $id = $data_bd["id"];

  8. $title = $data_bd["title"];

  9. $file = $data_bd["file"];

  10. $url = $data_bd["url"];

  11. echo nl2br("\n".$id."/".$title."/".$file."/".$url);

  12. ?>

Рис.2 PHP-код для переноса одиночной строки на страницу сайта

Здесь, в начале переменным "$table", "$column" и "$value", которые будут использоваться в качестве параметров функции, присваиваются нужные значения (поз. 3÷5).

Затем осуществляется вызов функции "getLine()" (поз.6), а после ее выполнения происходит перенос значений элементов массива в соответствующие переменные PHP (поз. 7÷10).

И таким образом, с помощью языковой конструкции "echo" и функции обработки строк "nl2br" (поз.11) мы сможем отобразить полученный результат на одной из страниц нашего сайта. Функции "nl2br" здесь применена для вставки тега "‹br›", для перевода строк, имеющих регулярные выражения "\n".

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

Для увеличения / уменьшения размера изображения кликните по картинке
ВВыводим данные из БД MySQL в PHP, картинка 1

Рис.3 Скриншот вывода одиночной строки

Как видно, здесь через дробь по порядку отображаются значения полей выбранной записи, где полю "id" соответствует значение 4, "title" - "Получить скидку", а "file" - "righting.php". Что и требовалось получить для этого варианта.

Вывод набора строк по заданному условию (использование двумерного массива)


В предыдущем примере мы рассмотрели случай, когда требуется извлечь только одну уникальную запись. Но, что делать, если при выполнении запроса к базе данных "query" в полученном объекте "$result" будет не одна, а множество строк?

В этом случае при выполнении метода "fetch_assoc()" следует использовать указатель текущей позиции, который при каждой следующей операции считывания сдвигается на одну позицию вперед. Если же строки закончатся, то указатель на несуществующей строке возвратит значение "false".

А для перебора всех найденных записей при выполнении метода "fetch_assoc()" обычно используется оператор цикла "while", который обеспечивает выполнение вложенного выражения до тех пор, пока выражение в самом "while" является "TRUE" (в нашем случае, пока не закончатся извлекаемые строки).

Ниже показан PHP-код с внесенными дополнениями, который позволяет функции работать уже не с одной, а с набором строк (позиции с дополнениями или изменениями по сравнению с предыдущим вариантом выделены светлым фоном).

  1. <?php

  2. //----Функция вывода набора строк по заданному условию-------------

  3. function getUrlDesс($url_1, $url_2, $url_3) {

  4. global $mysqli;

  5. if (!$result = $mysqli->query("SELECT * FROM `url` WHERE `url`='$url_1' OR `url`='$url_2' OR `url`='$url_3' ORDER BY `id` DESC")) {

  6. die ('При извлечении записей возникла ошибка: '.$mysqli->errno.' - '.$mysqli->error);

  7. }

  8. $array = array();

  9. while (($row = $result->fetch_assoc()) != false) {

  10. $array[] = $row;

  11. }

  12. return $array;

  13. }

  14. ?>

Рис.4 Функция вывода набора строк по заданному условию

Здесь следует обратить внимание на объявление в качестве массива новой переменной "$array" (поз.8), в котором будут размещаться все найденные записи.

А, далее, в цикле "while" (поз. 9÷11) при каждом обращении к методу "fetch_assoc()" через промежуточную переменную "$row" в этот массив будет записываться данные очередной строки. Причем, одним из ключей массива будет порядковый номер строки (по умолчанию начиная от нуля), а второй - названия полей таблицы.

Таким образом мы получим двумерный массив со всеми записями, которые удовлетворяют условию, указанному в запросе (поз.5). В данном случае SQL-запрос полностью повторяет тот, который использовался в предыдущей статье, а именно: "SELECT * FROM `url` WHERE `url`='poluchity-skidku' OR `url`='statistika-ugonov' OR `url`='kontakti' ORDER BY `id` DESC". Исключение составляет лишь то, что вместо конкретных значений полей в нем указаны переменные "$url_1", "$url_2" и "$url_3".

В итоге, после выполнения такой функции будет возвращен двумерный массив (поз.12), в котором будут находиться все полученные данные по заданному условию.

А, теперь, составив небольшой PHP-скрипт, изображенный на рис.5, перенесем содержимое этого массива на HTML-страницу.

  1. <?php

  2. echo nl2br("\n\nПроверка вывода набора строк по заданному условию:");

  3. $url_1 = "poluchity-skidku";

  4. $url_2 = "statistika-ugonov";

  5. $url_3 = "kontakti";

  6. $data_bd = getUrlDesс($url_1, $url_2, $url_3);

  7. for ($i = 0; $i < count($data_bd); $i++) {

  8. $id = $data_bd[$i]["id"];

  9. $title = $data_bd[$i]["title"];

  10. $file = $data_bd[$i]["file"];

  11. $url = $data_bd[$i]["url"];

  12. echo nl2br("\n".$id."/".$title."/".$file."/".$url);

  13. }

  14. ?>

Рис.5 PHP-код для переноса набора строк на страницу сайта

В отличие от первого варианта, здесь для перебора всех элементов массива используется оператор цикла "for" (поз. 7÷13), в теле которого вывод каждой строки будет выполняться по значению переменной "$i" и наименованию полей.

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

Для увеличения / уменьшения размера изображения кликните по картинке
ВВыводим данные из БД MySQL в PHP, картинка 2

Рис.6 Скриншот вывода набора строк по заданному условию

Здесь видно, что теперь выведены данные трех срок, которые удовлетворяют заданному условию, причем, размещены они, как и требуется, в порядке убывания по значению поля "id".

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

Проверка наличия записи в таблице


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

В этом варианте не требуется получать какие-либо данные. Нужно лишь иметь ответ - Да или Нет. На практике, в качестве такого ответа функция возвращает значение "TRUE" при положительном результате и "FALSE" - при отрицательном.

Сделать это можно довольно простым способом, задействовав оператор условия "if". Код такой функции с наименованием "checkLine" показан на следующем рисунке (позиции с внесенными изменениями по сравнению с вариантом, изображенном на рис.1, выделены светлым цветом).

  1. <?php

  2. //----Функция проверки наличия записи-------------

  3. function checkLine($table, $column, $value) {

  4. global $mysqli;

  5. if (!$result = $mysqli->query("SELECT * FROM `$table` WHERE `$column`='$value'")) {

  6. die ('При извлечении записей возникла ошибка: '.$mysqli->errno.' - '.$mysqli->error);

  7. }

  8. if ($result->fetch_assoc()) return true;

  9. else

  10. return false;

  11. }

  12. ?>

Рис.7 Функция проверки наличия записи

Здесь оператором "if" (поз.8,10) определено, что если будет найдена по заданному условию хотя бы одна строка, функция возвратит значение "TRUE", если же таких срок не будет, то "FALSE". Остальной же код аналогичен, за исключением только названия самой функции.

Для проверки этого варианта составим следующий небольшой скрипт.

  1. <?php

  2. echo nl2br("\n\nПроверка наличия записи:");

  3. $table = "url";

  4. $column = "url";

  5. $value = "poluchity-skidku";

  6. $data_bd = checkLine($table, $column, $value);

  7. if ($data_bd == true) echo nl2br("\nЗапись со значением \"poluchity-skidku\" в таблице \"url\" существует");

  8. else

  9. echo nl2br("\nЗапись по заданному условию не найдена");

  10. ?>

Рис.8 PHP-код для проверки наличия записи

После обновления страницы можно увидеть, что по данному запросу в заданной таблице запись существует.

Для увеличения / уменьшения размера изображения кликните по картинке
ВВыводим данные из БД MySQL в PHP, картинка 3

Рис.9 Скриншот проверки наличия записи

Теперь для проверки работы этого варианта внесем в значение переменной "$value", по которой происходит поиск нужной строки, какую-нибудь ошибку, например добавим цифру 7, как показано на рис.10.

  1. <?php

  2. echo nl2br("\n\nПроверка наличия записи:");

  3. $table = "url";

  4. $column = "url";

  5. $value = "poluchity-skidku7";

  6. $data_bd = checkLine($table, $column, $value);

  7. if ($data_bd == true) echo nl2br("\nЗапись со значением \"poluchity-skidku\" в таблице \"url\" существует");

  8. else

  9. echo nl2br("\nЗапись по заданному условию не найдена");

  10. ?>

Рис.10 PHP-код с ошибкой в значении переменной "$url"

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

Для увеличения / уменьшения размера изображения кликните по картинке
ВВыводим данные из БД MySQL в PHP, картинка 4

Рис.11 Скриншот проверки наличия записи с внесенной ошибкой

На этом мы закончим рассмотрение вопроса о выводе данных MySQL с помощью PHP. И теперь, на основе рассмотренного здесь материала перейдем в следующих статьях к практическому использованию возможностей MySQL.

Исходные файлы сайта


Знак папкиИсходные файлы сайта с обновлениями, которые были сделаны в данной статье, можно скачать бесплатно в дополнительных материалах:

При этом фрагменты PHP-кодов, которые в качестве примера выполняют вывод данных из таблицы "url_php", размещены в файлах "functions.php" папки "mysql" и "index.php корневого каталога сайта.

Для отключения проверки работы представленных скриптов следует соответствующие фрагменты PHP-кода закомментировать.

В части, касающейся базы данных, временно созданные таблицы "url_sql" и "url_php", которые ранее использовались для демонстрации способов работы с БД MySQL, в связи с дальнейшей ненадобностью удалены. По состоянию на текущее время в базе данных находится только таблица "url".

С уважением, Николай Гришин

Читать дальше


Подписка


Здесь вы можете подписаться на получение уведомлений о выходе новых статей блога.

Необходимо отметить, что данные об e-mail надежно защищены (работа сайта обеспечивается только через защищенные соединения по протоколу SSL) и не предназначены для использования третьими лицами.

Комментарии


Если у Вас возникли вопросы, или есть какие-либо пожелания по представлению материала, либо заметили какие-нибудь ошибки, а быть может просто хотите выразить свое мнение, пожалуйста, оставьте свои комментарии. Такая обратная связь очень важна для возможности учитывать в дальнейшем мнение посетителей.

Буду Вам за это очень признателен!

comments powered by HyperComments

Социальные сети


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

Другие статьи из рубрики "Как сделать сайт"


Показать больше


  • Google+ Опубликованные статьи можно также смотреть в подборках Google+