Как работать с базами данных в PHP с помощью модуля PDO

Рассказываем, как работать с PostgreSQL в PHP и что такое модуль PDO.
Во время разработки приложений часто нужно подключать и использовать базы данных для хранения информации. Одна из самых распространенных — PostgreSQL. Расскажем, как работать в PHP именно с ней. Для этого мы будем использовать встроенный модуль PHP Data Objects (PDO) — унифицированный интерфейс для работы с базами данных.
Чтобы начать работу с PDO, необходимо поработать с PDO — драйвером конкретной базы данных. Мы будем использовать драйвер для работы с PostgreSQL.
Содержание
- Активация драйвера PDO_PGSQL
- Создание структуры проекта PHP с помощью Composer
- Подключение к базе данных PostgreSQL
- Создание таблиц с помощью PHP PDO
- Добавление данных в таблицу PostgreSQL с помощью PDO
Активация драйвера PDO_PGSQL
Обычно дистрибутив PHP уже содержит драйвер для работы с PostgreSQL PDO_PGSQL
, поэтому настраивать PHP вручную не нужно. Если это не так, драйвер придется активировать вручную. Для этого откроем файл php.ini и отредактируем следующую строку:
;extension=php_pdo_pgsql.dll
Нужно раскомментировать строку. Для этого удалим точку с запятой (;) в начале строки и перезапустим веб-сервер.
extension=php_pdo_pgsql.dll
Создание структуры проекта PHP с помощью Composer
Пакетный менеджер Composer предназначен для управления зависимостями в PHP. Он позволяет подключать к проекту PHP библиотеки и автоматически управлять их обновлением.
С помощью Composer можно формировать структуру проектов. Создадим в каталоге webroot директорию postgresqlphpconnect для хранения файлов проекта. Затем создадим в директории postgresqlphpconnect подкаталог app и файл composer.json. Текст файла будет таким:
Каждый новый класс в каталоге app автоматически связывается с пространством имен PostgreSQLTutorial
.
Перейдем в каталог postgresqlphpconnect в терминале и введем команду:
Composer должен создать файл автозагрузки, загрузить библиотеки, объявленные в файле composer.json, и разместить библиотеки сторонних разработчиков в директории vendor. В нашем примере библиотеки не объявлены, поэтому команда только создает файл автозагрузки.
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files
Создадим в каталоге postgresqlphpconnect файл index.php, а в каталоге app — файлы Connection.php и database.ini. Структура проекта выглядит следующим образом:
Читайте также:
Вышел PHP 8.2: разбираем главные изменения
Подключение к базе данных PostgreSQL
Создадим новую базу данных и назовем ее hexlet
.
В файле database.ini будут храниться параметры базы данных PostgreSQL:
host=localhost
port=5432
database=labels
user=postgres
password=postgres
Создадим в файле Connection.php новый класс Connection
.
Connection
— Singleton-класс. Для него можно создать только один экземпляр. Если экземпляр уже существует, класс возвращает его при попытке создания нового экземпляра.
Для подключения к базе данных PostgreSQL нужно создать экземпляр класса PDO
. Используем метод connect()
, чтобы получить из файла database.ini параметры конфигурации базы данных, сформировать строку подключения и передать ее конструктору PDO
.
Добавим в файл index.php приведенный ниже код:
Если при подключении к серверу базы данных PostgreSQL возникает исключение, PHP возвращает \PDOException
. Для решения этой проблемы нужно создать внутри блока try...catch
новый объект PDO
.
Выполним команду для обновления файлов автозагрузки:
Для проверки запустим в веб-браузере файл index.php. Чтобы это сделать, можно просто перетащить файл в окно браузера, либо открыть файл с помощью меню «Файл → Открыть».
Чтобы ознакомиться с возможным исключением, настроим для файла database.ini неправильные параметры. Мы увидим сообщение об ошибке.
Если неправильно введен пароль, то увидим это сообщение:
Если база данных содержит недостоверные данные, то увидим это сообщение:
Мы научились подключаться к базе данных PostgreSQL в приложении PHP с помощью PDO API. Далее продолжим использовать класс Connection
.
Читайте также:
Как настроить VS Code для удобной разработки на PHP
Создание таблиц с помощью PHP PDO
Чтобы создать таблицу в базе данных PostgreSQL с помощью PHP PDO, нужно:
- Создать новый объект PDO для подключения к базе данных
- Вызвать метод
exec()
объекта PDO и выполнить оператор CREATE TABLE
Пример создания таблицы
Мы уже создали базу данных hexlet
на сервере баз данных PostgreSQL. В целях демонстрации добавим метки таблиц. Создадим в каталоге app класс PostgreSQLCreateTable
.
Конструктор класса принимает объект PDO в качестве аргумента. Метод createTables()
создает в базе данных новые таблицы. Переменная $sql
содержит запрос CREATE TABLE. Для выполнения запроса вызовем метод exec()
объекта PDO. В файле index.php подключимся к базе данных PostgreSQL и выполним запрос для создания таблиц.
Добавление данных в таблицу PostgreSQL с помощью PDO
Добавим данные в таблицу базы данных:
- Создадим новый экземпляр класса
PDO
для подключения к базе данных PostgreSQL - Объявим переменную
$sql
в которую поместим запросINSERT
. Для передачи параметров этому запросу можно присвоить заполнителям имена, например,:param
. - Вызовем метод
prepare()
объекта PDO и подготовим запросINSERT
. Методprepare()
возвращает объектPDOStatement
. - Вызовем метод
bindValue()
объектаPDOStatement
и передадим значения запросу. - Вызовем метод
execute()
объектаPDOStatement
и выполним запросINSERT
.
Обновление данных выполняется таким же образом, за исключением того, что принято в конце возвращать количество измененных строк. Это делается с помощью метода rowCount()
.
Вот и все — мы узнали, что такое PHP Data Objects, научились подключаться к базе данных, создавать таблицы, добавлять и модифицировать данные. Если вы хотите более подробно изучить PDO, почитайте документацию PHP.
Освойте модуль PDO:
На Хекслете есть курс «PHP PDO: Работа с базой данных». Пройдите его, чтобы научиться работать с PDO и освоить основные способы взаимодействия с базой данных.
Алексей Покровский
3 года назад