这段时间还是比较忙的,不过还是抽出了一些时间研究了java和php两种bs开发的语言(有的人把java叫做平台,我这里还习惯叫语言)。个人习惯在firebird上进行系统的开发,firebird提供的jdbc在java上调用还是很少碰到问题的,在php上就比较悲惨了,一个id产生器在php中的调用半天不返回id,这里我用的是pdo,php用pdo抽象了数据库的操作(在接口函数上),比单独的调用不同数据库的函数要好点我觉得。就是这个pdo始终不能返回id,实在郁闷,两个晚上了,搜索的好多也没有得到解决,用尽了所有php文档提供的例子也不行,实在是失望。当然用firebird/interbase的专门函数可以得到id,但是心里还是不爽,从firebird和interbase的发展上来看,两者将彼此远离,这样原来比较兼容的数据库api也会慢慢的不再兼容了。
暂时不敢说是pdo的bug,再找找资料看看。不过对使用php的信心却受到了不小的打击。
以下是我用pdo测试的代码:
CYGETDISHTEMPLETID是包装了id产生器CYdishtempletid的存储过程
<?
try {
$dbh = new PDO ("firebird:dbname=localhost:C:/eatery2/jd/data/MISJDDEV.GDB", "SYSDBA", "masterkey");
//$dbh->setAttribute(PDO::ATTR_AUTOCOMMIT, PDO::ERRMODE_EXCEPTION);
$sql = 'select * from CYGETDISHTEMPLETID;';
//$sql='SELECT GEN_ID(CYdishtempletid, 1) from RDB$DATABASE;';
$sth = $dbh->prepare($sql);
$sth->execute();
$result = $sth->fetchAll();
print_r($result);
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
?>
如果谁知道问题出在哪里希望告诉我,谢谢