Програмування

Доступ до СУБД 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'

Щоб вирішити цю проблему, потрібно скопіювати fbclient.dll у system32.

Обговорення 2

Залишити коментар

Вашу електронну адресу не буде оприлюднено. Обов’язкові поля позначено *