我正在尝试在我的 PHP 应用程序中使用 Firebird。我已经设法使 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');
当我在 ISQL 中运行“选择”查询时,它返回一个插入的行。但是使用 interbase 或 PDO 执行此操作,我得到一个空对象。
我还尝试使用大写字母作为表名和列名。
我究竟做错了什么?
我在安装了 WAMP 和 Firebird 服务器的 Windows 7 中运行这个项目。
跨库 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/>';
}
当我在本地工作时,我还放置了连接数据。