Найти в Дзене
ZDG

Разрабатываем сайт #5: PHP и база данных

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

Предыдущие части: Идентификаторы, Работаем с таблицами, Создаём базу данных, Установка MySQL

Читайте также: Как работает веб-сайт, Бэкэнд на PHP, Введение в язык PHP

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

Расширения PHP

PHP поставляется с набором расширений. Каждое расширение имеет имя и предназначено для какой-то задачи. Например, расширение gd нужно, чтобы работать с изображениями. Расширение mbstring нужно для работы с Unicode-строками, и т.д.

В нашем случае для работы с базой MySQL необходимо использовать расширение mysqli. Раньше оно называлось просто mysql, потом появилась улучшенная (improved) версия, поэтому в конце дописана буква i.

Отмечу, что есть также расширение pdo (PHP Data Objects). Оно предпочтительнее с точки зрения универсальности и безопасности, но пользоваться им несколько сложнее, поэтому его мы оставим на потом и начнём с того, что попроще.

Как подключить расширение

Проблема в том, что в PHP некоторые расширения доступны сразу, а некоторые нужно подключать, и mysqli в их числе. Чтобы подключить расширение, нужно отредактировать файл php.ini, который находится в рабочей папке PHP.

Откройте файл php.ini и найдите в нём строку extension_dir. Это путь к папке, в которой лежат расширения. В поставке PHP это папка ext, которая находится в рабочей папке. Как вы помните, PHP мы ставили (ну, я ставил) в c:/usr/dev/php/. Следовательно, расширения находятся в папке c:/usr/dev/php/ext. Этот путь (целиком) и нужно указать в php.ini:

extension_dir = "c:/usr/dev/php/ext"

Но это ещё не всё. Мы указали только папку, а нужно ещё подключить расширение. Для этого сделайте поиск строки extension=, и вы попадёте в блок, где подключается много расширений, но все они закомментированы, то есть неактивны. Нужно убрать комментарий со следующей строчки, чтобы сделать расширение активным:

extension=mysqli

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

Проверка подключения к базе

Напомню, что у нас есть база cat, в которой есть пользователь cat с паролем cat123 (или тем, который вы ввели при инициализации).

Напишем на PHP код для проверки соединения (файл test_db.php):

-2

Для соединения используется функция mysqli_connect(). Первый параметр – имя хоста, на котором расположена база. У нас это localhost, то есть наша локальная машина. Затем идут имя пользователя cat, пароль пользователя cat123, и имя базы cat.

В результате функция вернёт нам объект, хранящий соединение с базой, или значение false.

Мы помещаем этот результат в переменную $connection и проверяем, всё ли прошло успешно. Если да, мы должны увидеть вывод строки "connected".

-3

Ну, значит сработало :)

Выполнение запросов к базе

Попробуем получить записи из таблицы note. Для этого используется функция mysqli_query():

-4

Первым параметром мы передаём в функцию созданное ранее соединение ($connection), а вторым – запрос к базе, написанный в обычном текстовом виде, как мы уже неоднократно писали руками в MySQL-консоли.

Результат выполнения команды SELECT, как вы знаете, это список записей из таблицы note. Этот список в PHP представляет собой массив, который мы помещаем в переменную $resultset.

Чтобы распечатать полученные записи, мы обходим массив с помощью foreach():

-5

Каждый элемент массива $resultset это одна запись из таблицы (попадает в переменную $entry). Она, в свою очередь, также является массивом. Этот массив содержит те же поля, какие есть в таблице note: id, date, title, content. Для нашего удобства элементы массива имеют ключи, совпадающие с именами столбцов таблицы. То есть мы можем обращаться к ним как $entry['id'], $entry['date'] и т.д.

Вот какой результат получился у меня (три записи):

-6

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

Читайте дальше: Форма редактирования