Я пытаюсь использовать Firebird в своем приложении PHP. Мне уже удалось заставить работать расширения interbase и Firebird PDO, и соединение установилось без проблем.
Но когда я пытаюсь сделать простой выбор в одну из таблиц (select * from filial), он всегда возвращается пустым, как будто в таблице ничего не записано.
Я уже тестировал свой сценарий в другой базе данных, и он работал правильно, так что я полагаю, что это не проблема PHP, но я думаю, что он имеет что-то с моей базой данных.
Вот как я создал базу данных и таблицу с ISQL:
create database 'C:\My\Database\Path.fdb' page_size 4096 user 'myuser' password 'mypass' default character set UTF8;
connect 'C:\My\Database\Path.fdb' user 'myuser' password 'mypass';
create table filial (id int not null primary key, nome varchar(45));
insert into filial (id, nome) values (1, 'test');
Когда я запускаю запрос «select» в ISQL, он возвращает одну вставленную строку. Но, делая это с помощью Interbase или PDO, я получаю пустой объект.
Я также попытался использовать заглавные буквы для имен таблиц и столбцов.
Что я делаю неправильно?
Я запускаю этот проект в Windows 7 с установленным сервером WAMP и Firebird.
Interbase PHP код:
$db_server = 'localhost';
$db_user = 'SYSDBA';
$db_passw = 'masterkey';
$db_name = 'C:\Users\Joao\Firebirds\Desenvolvimento.fdb';
$host = $db_server.':'.$db_name;
$dbh = ibase_connect($host, $db_user, $db_passw);
$stmt = 'select * from filial';
$sth = ibase_query($dbh, $stmt);
while ($row = ibase_fetch_object($sth)) {
echo $row->ID.'<br />';
}
ibase_free_result($sth);
ibase_close($dbh);
PDO PHP код:
$db_server = 'localhost';
$db_user = 'SYSDBA';
$db_passw = 'masterkey';
$db_name = 'C:\Users\Joao\Firebirds\Desenvolvimento.fdb';
$str_conn='firebird:host='.$db_server.';dbname='.$db_name;
$conn = new PDO($str_conn, $db_user, $db_passw);
$q = $conn->prepare('SELECT * FROM filial;');
$q->execute();
$dados = $q->fetchAll(PDO::FETCH_OBJ);
foreach($dados as $row){
echo $row->ID.'<br/>';
}
Поскольку я работаю локально, я также помещаю данные соединения.
Задача ещё не решена.
Других решений пока нет …