Конечно 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
спасибо, полезное для себя нашел
спасибо