Рассказываем, как работать с PostgreSQL в PHP и что такое модуль PDO.
2026-02-26 18:28 Diff

Рассказываем, как работать с PostgreSQL в PHP и что такое модуль PDO.

Во время разработки приложений часто нужно подключать и использовать базы данных для хранения информации. Одна из самых распространенных — PostgreSQL. Расскажем, как работать в PHP именно с ней. Для этого мы будем использовать встроенный модуль PHP Data Objects (PDO) — унифицированный интерфейс для работы с базами данных.

Чтобы начать работу с PDO, необходимо поработать с PDO — драйвером конкретной базы данных. Мы будем использовать драйвер для работы с PostgreSQL.

Содержание

Активация драйвера 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 и освоить основные способы взаимодействия с базой данных.