Работа с Firebird в PHP через PDO
Начиная с версии PHP 7.3 мы не можем использовать функции по работе с Firebird, так как они были исключены. Таким образом, можно работать с СУБД только через PDO. В данной инструкции мы рассмотрим процесс установки расширения PHP, а также примеры подключения к базе и выполнения SQL-запросов. Работа будет выполнена на примере Linux Ubuntu.
Установка расширения
Установка выполняется одной командой:
apt-get install -y php-pdo-firebird
Готово.
Однако, если у нас несколько альтернативных версий PHP, установка должна выполняться с указанием конкретной версии, например:
apt-get install -y php7.4-pdo-firebird
Подключение к базе
Для подключения в нашем скрипте PHP используем следующую конструкцию:
- $dsn = 'firebird:dbname=firebird.dmosk.ru:mydbname;charset=utf8;';
- $username = 'SYSDBA';
- $password = 'masterkey';
- try {
- $fire_conn = new PDO($dsn, $username, $password, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
- } catch (PDOException $e) {
- echo $e->getMessage();
- }
* где:
- firebird:dbname=firebird.dmosk.ru:mydbname;charset=utf8 — строка подключения:
- firebird — указание на драйвер, который должна использовать система.
- dbname=firebird.dmosk.ru — сервер для подключения. Можно имя, а можно IP-адрес.
- mydbname — имя базы данных, к которой мы будем подключаться.
- $username — переменная с пользователем, под которым будем подключаться к серверу СУБД.
- $password — переменная с паролем, с которым будет выполняться подключение к Firebird.
Выборка
Для выполнения запроса SELECT применяем следующую конструкцию:
- $SQL = "SELECT * FROM users";
- $result = $fire_conn->query($SQL);
- $result->setFetchMode(PDO::FETCH_ASSOC);
- while ($mass = $result->fetch()) {
- print_r($mass);
- }
* где:
- $SQL — переменная с нашим запросом.
- PDO::FETCH_ASSOC — режим, при котором возвращается только ассоциативный массив.
- $mass — переменная, в которой будут данные, извлеченные из базы.
Редактирование данных
Под редактирование подразумевается добавление, редактирование или удаление. Запросы для этого разные, но с точки зрения работы через PDO процессы схожи. Рассмотрим на примере вставки:
- $fire_conn->query("INSERT INTO users (name, title) VALUES ('Дмитрий', 'Программист')");
Читайте также
1. Включение поддержки Firebird + PHP версии 7.2 и ниже на Linux