Взаимодействие PHP и MySQL

Взаимодействие PHP и MySQL

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

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

  1. Подключение к установленной базе данных MySQL.
  2. Использование команды USE в отношении нужной базы данных MySQL.
  3. Отправка SQL базе данных.
  4. Получение результатов.
  5. Обработка результатов.

Действия 3, 4 и 5 будут изменяться в зависимости от характера выполняемой работы. Сценарий, создающий таблицы, немного отличается от сценария, который ведет поиск в существующих таблицах. Но первые два действия — подключение к MySQL и использование нужной базы данных — всегда одни и те же, независимо от предназначения сценария.

Подключение к базе данных MySQL

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

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

Это важно! Если в интернете вы найдёте урок, где будет использоваться mysqli_connect или mysql_connect - смело закрывайте его, так писали 10 лет назад.

Для создания подключения нужно создать новый объект класса PDO. В качестве аргументов в конструктор нужно передать DSN - это строка с указанием драйвера (в нашем случае - mysql), хоста и именем базы данных. Второй аргумент - имя пользователя (в нашем случае - root). Третий - пароль (в наше случае пустой).

Перед уроком я создал базу users, а в ней табличку data со следующей структурой:

Код доступен только после покупки курса MySQL с нуля.
Код доступен только после покупки курса MySQL с нуля.

Первым делом после подключения стоит задать кодировку:

Код доступен только после покупки курса MySQL с нуля.

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

Код доступен только после покупки курса MySQL с нуля.

Сначала мы создаём подготовленный запрос - он пока не выполняется. Заметьте, вместо значений мы указали :name и :year - это те параметры, в которые подставятся значения, заданные в следующих двух строках. В конце мы вызываем execute() - собственно, выполнить получившийся запрос.

Давайте выполним этот скрипт и посмотрим на то, что появилось в базе.
Результат первого запроса из PHP

Давайте обновим скрипт ещё несколько раз и посмотрим в базу снова.
Результат других запросов из PHP

Как видим - данные в базе успешно добавились.

Выборка из базы с помощью PHP

Давайте теперь прочитаем данные, которые мы записали. Схема та же, только подготавливаем SELECT-запрос.

Код доступен только после покупки курса MySQL с нуля.

Запрос выполнился, но это ещё не всё. Теперь нужно получить результат. Это делается так:

Код доступен только после покупки курса MySQL с нуля.

В результате мы получим массив этих записей:
Вывод данных из БД

Давайте выведем их более красиво, добавим немножко HTML.

Код доступен только после покупки курса MySQL с нуля.

Ну вот, совершенно другое дело!
Данные из MySQL в тегах HTML

Если в SELECT-запросе нужно добавить какие-то параметры, то делается это аналогично:

Код доступен только после покупки курса MySQL с нуля.

Теперь вернётся только один пользователь, подошедший под условия запроса.
Один пользователь из запроса

Вот и всё. Главное - всегда используйте биндинг параметров. Не пихайте данные напрямую в запрос - это небезопасно. Если интересно, можете почитать про SQL-инъекции.