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

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

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

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

<?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 '<b>Пользовательских таблиц: '.$row[0].'</b>';
?>

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

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

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

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

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

<b>Fatal error</b>: 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

Запись опубликована в рубрике Без рубрики. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *