Доступ к СУБД Firebird из PHP. Делаем отображение информации на планшет из корпоративной БД.

Конечно Firebird это очень нетипичная база данных для веба, но когда стоит задача дать людям возможность оперативно у себя на телефоне или планшете видеть информацию из корпоративной СУБД, которая как раз на Firebird, то написать несколько несложных php-скриптов и поставить локальный веб-сервер куда проще, чем создавать отдельное приложение под android и iOS.

Для того чтобы заставить php обращаться к Firebird или Interbase серверу в расширениях php (PHP Extensions) нам понадобится php_interbase модуль (в моем случае php_interbase.dll

Само же общение с сервером Firebird отличается от MySQL лишь особенностями языка запросов, а в php разница практически отсутствует. Тестовый файл работы с БД может выглядеть так:

$database = '127.0.0.1:TEST';
$user = 'SYSDBA';
$password = 'masterkey';
$db = ibase_connect($database, $user, $password);
if ($db!=true) echo "no connect";

$result = ibase_query('select count(*) from "RDB$RELATIONS" where "RDB$SYSTEM_FLAG"=0');
$row = ibase_fetch_row($result);
echo 'Пользовательских таблиц: '.$row[0];

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

При этом важно чтобы и сам файл php и база данных была в одной кодировке, например оба в windows-1251. Но зачастую в вебе для страниц применяется кодировка UTF-8, в ней же сохраняются и php-файлы, в этом случае достаточным оказалось задать дополнительный параметр в строке подключения:

$db = ibase_connect($database, $user, $password, «UTF-8»);

После чего результат запросов стал отдаваться в UTF-8.

P.S. Но не все так просто оказалось в других случаях. При установке на windows 2008 и обращении к функциям работы с БД я стал получать:

Fatal error: Call to undefined function ibase_connect()

одновременно в Apache\log\errors.log стало появляться:

PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\Program Files (x86)\\VertrigoServ\\php\\ext\\php_interbase.dll'

для решения этого нужно в system32 кинуть fbclient.dll

2 комментария к “Доступ к СУБД Firebird из PHP. Делаем отображение информации на планшет из корпоративной БД.”

Оставьте комментарий

Ваш адрес email не будет опубликован.