×

Дополнительные материалы бесплатно предоставляются только зарегистрированным пользователям.

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

Для тех кто не зарегистрирован, можно это сделать на вкладке Регистрация.

  • Рубрики
  • Слайдер
  • Сайдбар
  • Подписка
  • Вниз
  • Вверх
×
  • Как сделать сайт с нуля своими руками (вводная часть)

    1. Причины создания пошаговой инструкции по разработке самописного сайта
    2. Тема создаваемого сайта
    3. В чем будет заключаться монетизация
    4. Функционал
    5. Этапы создания
    6. Текущее состояние создаваемого сайта

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

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

    Причем чтобы такой интернет-ресурс был создан не на каком-нибудь стандартном шаблоне бесплатной СMS (Content management system - система управления контентом) типа WordPress, Drupal, Joomla и т.п., а заточенный под себя, с возможностью обеспечить ему должную безопасность и реализовать все свои индивидуальные потребности.

    Часто такие сайты, созданные под конкретные задачи на основе языка разметки веб-страниц HTML, стилей CSS и других инструментов веб-программирования (PHP, JavaScript и т.п.), называют самописными.

    Этой статьей начинается отдельная рубрика "Как сделать сайт с нуля своими руками", где на реальном примере, с предоставлением исходных материалов (программные коды, файлы и т.п.), будет показано, как действительно можно самостоятельно сделать рабочий сайт.

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

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

Самописный сайт своими руками!

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

Здесь можно посмотреть текущее состояние тестового самописного сайта, который создается в рамках цикла статей Сделай сайт с нуля своими руками.

Где в дополнительных материалах можно бесплатно скачать исходные файлы сайта с таблицами MySQL.

Вы здесь: Главная → Сборник статей → MySQL → Подключаем базу данных MySQL с использованием процедурного и объектно-ориентированного стиля MySQLi


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

Подключаем базу данных MySQL с использованием процедурного и объектно-ориентированного стиля MySQLi PHP

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

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

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

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

Содержание


  • Общие вопросы по подключению к БД
  • Отличие в подключении к БД на локальном веб-сервере и на хостинге
  • Подключение к базе данных с использованием процедурного интерфейса
  • Подключение к базе данных объектно-ориентированным стилем
  • Исходные файлы сайта

Общие вопросы по подключению к БД


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

Если попытаться найти в интернете информацию по теме подключения к базе данных, то во многих случаях там будут приводиться примеры, в которых используется старое одноименное расширение MySQL. Однако, такой интерфейс в настоящее время считается устаревшим, и в новых версиях, начиная с "PHP 7", вообще, не используется.

На это обстоятельство необходимо обратить особое внимание и в своей работе использовать только современные способы работы с базой данных MySQL. Поэтому здесь мы будем использовать расширение MySQLi (улучшенный модуль MySQLi). Добавленная в названии буква "i" обозначает улучшенный (Improved).

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

Порядок работы с базой данных можно разбить на три основные этапа:

  • Подключение к БД.
  • Выполнение запросов и получение результатов.
  • Отключение соединения с БД.

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

Также следует отметить, что принудительного закрытия подключение к БД не требуется, оно закрывается автоматически в конце выполнения PHP-скрипта.

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

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

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

Поэтому, чтобы как-то упорядочить наш будущий программный код, связанный с работой с БД, создадим два файла: "connect.php" и "functions.php", которые разместим во вновь созданную папку, скажем, с названием "mysql". При этом, файл "connect.php" будет выполнять необходимые действия по подключению соединения с БД, а "functions.php" будет предназначен для размещения требуемых функций для работы с таблицами базы данных.

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

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

  1. <?php

  2. require_once "mysql/connect.php";

  3. require_once "mysql/functions.php";

  4. ?>

Рис.1

Но так как количество подключаемых файлов по мере создания сайта будет увеличиваться, то для удобства лучше этот код поместить в отдельный файл в корневого каталога, скажем с именем "start.php". Который в свою очередь можно будет подключить в начале каждой страницы сайта.

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

Отличие в подключении к БД на локальном веб-сервере и на хостинге


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

Для локального веб-сервера Denwer три параметра определены постоянно и не требуют каких-либо изменений, а именно: имя хоста, имя пользователя и пароль.

В качестве же имени базы данных используется то название, которое присваивается при ее создании (в предыдущей статье на рис.4 можно видеть на каком этапе создания было дано новой базе данных имя "avtobezugona").

Ниже перечислены все необходимые данные, которые мы будем использовать для подключения на локальном веб-сервере Denwer:

  • имя хоста - "localhost" означающее, что в качестве хоста используется локальный компьютер;
  • имя пользователя - "root";
  • пароль - "" (пустая строка);
  • имя базы данных - "avtobezugona" (определено при создании базы данных);

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

  • в качестве имени хоста обычно используется "localhost", так как база MySQL, как правило, находится на текущем хосте. Но, в других случаях, может использоваться и ip-адрес. Данную информацию предоставляет хостер;
  • имя пользователя, пароль и имя базы данных определяется при создании базы данных на хостинге.

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


В расширении "MySQLi", который мы будем использовать имеется довольно большое количество различных функций. С их полным перечнем и подробным описанием улучшенного модуля "MySQLi" можно ознакомиться в соответствующей справочной литературе, например, по этой ссылке "https://php.ru/manual/book.mysqli.html".

Но, для обычной работы с базами данных достаточно использовать только некоторые из них. В частности, для подключения к БД в "MySQLi" существует специальная функция, которая в процедурном интерфейсе имеет следующей вид: mysqli_connect().

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

  1. <?php

  2. //----Данные для подключения-------------

  3. $host = "localhost";

  4. $user = "root";

  5. $password = "";

  6. $database = "avtobezugona";

  7. //----Процедурный стиль-------------

  8. // Подключение к базе данных

  9. $link = mysqli_connect($host, $user, $password, $database);

  10. ?>

Рис.2

Здесь видно, что в функции mysqli_connect() необходимые параметры представлены в виде переменных $host, $user, $password, $database, которым в строках с 3÷6 присвоены соответствующие значения.

В результате, в случае успешного выполнения этой функции мы получим объект в качестве идентификатора соединения в виде переменной $link, который в дальнейшем будем использовать для формирования запросов к базе данных. При неуспешном выполнении получим значение false. Что позволяет оценить состояние выполненного соединения.

И делается это с помощью условного оператора if, как показано на следующем фрагменте кода.

  1. <?php

  2. // Проверка соединения

  3. if(!$link) {

  4. die('Соединение не удалось: Код ошибки: '.mysqli_connect_errno().' - '.mysqli_connect_error());

  5. }

  6. ?>

Рис.3

Следует отметить, что здесь используемая языковая конструкция die() эквивалентна функции exit(). И выполняет функцию вывода на экран сообщения об ошибке и остановки выполнения скрипта в случае возникновения проблемы с соединением.

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

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

Для этого в модуле "MySQLi" имеется функция mysqli_set_charset(), задающая набор символов, который будет использоваться при обмене данными с сервером баз данных.

Ниже, на рис.3 показан соответствующий код.

  1. <?php

  2. // Установка кодировки соединения

  3. if(!mysqli_set_charset($link, "utf8")) {

  4. die('Ошибка при загрузке набора символов utf8: '.mysqli_errno($link);' - '.mysqli_error($link));

  5. }

  6. ?>

Рис.4

Здесь видно, что у функции mysqli_set_charset() имеются два параметра, идентификатор соединения $link; и используемая нами ранее при создании сайта кодировка "utf8".

Кроме того, как и в предыдущем случае, здесь также проверяется результат выполнения функции. И при неуспешном выполнении аналогично выдается сообщение об ошибке и останавливается работа скрипта.

Только теперь в сообщении будет присутствовать код и текст ошибки, полученный с помощью функций mysqli_errno() и mysqli_error(), соответственно.

В итоге, если собрать все фрагменты вместе, весь код файла "connect.php" примет следующий окончательный вид.

  1. <?php

  2. //----Данные для подключения-------------

  3. $host = "localhost";

  4. $user = "root";

  5. $password = "";

  6. $database = "avtobezugona";

  7. //----Процедурный стиль-------------

  8. // Подключение к базе данных

  9. $link = mysqli_connect($host, $user, $password, $database);

  10. // Проверка соединения

  11. if(!$link) {

  12. die('Соединение не удалось: Код ошибки: '.mysqli_connect_errno().' - '.mysqli_connect_error());

  13. }

  14. // Установка кодировки соединения

  15. if(!mysqli_set_charset($link, "utf8")) {

  16. die('Ошибка при загрузке набора символов utf8: '.mysqli_errno($link);' - '.mysqli_error()());

  17. }

  18. ?>

Рис.5

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

Можно лишь добавить только то, что в этом коде приведены данные для работы на локальном веб-сервере Denwer. Так, что при подключении к БД на хостинге в строках с 3÷6 необходимо изменить соответствующие настройки.

Подключение к базе данных объектно-ориентированным стилем


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

Основная разница заключается лишь в том, что в этом случае скрипт будет составлен не из привычных функций, а их конструкций вида $mysqli->connect_errno, обозначающих обращения объектов к соответствующим методам и свойствам.

На рис.5 показан код для подключения к базе данных с использованием объектно-ориентированного стиля.

  1. <?php

  2. //----Данные для подключения-------------

  3. $host = "localhost";

  4. $user = "root";

  5. $password = "";

  6. $database = "avtobezugona";

  7. //----Объектно-ориентированный стиль-------------

  8. // Подключение к базе данных

  9. $mysqli = new mysqli($host, $user, $password, $database);

  10. // Проверка соединения

  11. if($mysqli->connect_errno) {

  12. die('Соединение не удалось: Код ошибки: '.$mysqli->connect_errno.' - '.$mysqli->connect_error);

  13. }

  14. // Установка кодировки соединения

  15. if(!$mysqli->set_charset("utf8")) {

  16. die('Ошибка при загрузке набора символов utf8: '.$mysqli->errno.' - '.$mysqli->error);

  17. }

  18. ?>

Рис.6

Здесь, возвращаемое значение в строке 10 является объектом, представляющим подключение к серверу MySQL. Для того чтобы его использовать в дальнейшем, этому объекту присвоено переменная $mysqli.

А далее, при проверке выполнения соединения с базой данных объект $mysqli обращается к свойству connect_errno. И в случае наличия ошибки аналогично, как и в процедурном стиле, выполняется функция die() с выводом на экран соответствующего сообщения и остановкой выполнения скрипта.

Что касается установки кодировки, то здесь, в строке 16 вызывается метод set_charset(), создающий набор символов, который будет в дальнейшем использоваться при обмене данными (в нашем случае, это кодировка "utf8"). А далее, аналогично предыдущему, при неуспешном его выполнении вызывается функция die().

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

Так, при проверки соединения, в строке 13 можно видеть $mysqli->connect_errno и $mysqli->connect_error, а при установке кодировки в строке 17 - $mysqli->errno и $mysqli->error.

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

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

Данный файл можно найти в папке "mysql" в прилагаемых дополнительных материалах по ссылке, находящейся в конце статьи.

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

В следующих статьях мы создадим таблицу БД и сформируем необходимые запросы для работы с ее содержимом, которые разместим в созданный для этой цели файл "functions.php".

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


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

Дополнительные материалы бесплатно предоставляются только зарегистрированным пользователям.

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

Для тех кто не зарегистрирован, можно это сделать на вкладке Регистрация.

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


Комментарии


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

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

comments powered by HyperComments