我可以使用Firebird驱动程序连接.eft数据库文件,如下所示:
$pdo = new PDO("odbc:DRIVER={Firebird/InterBase(r) driver}; dbname=$dbName;", $user, $pass);
当我尝试进行简单的查询时
$stmt = pdo()->exec("select 1+1 as somma");
结果是:
致命错误:未捕获的异常' PDOException'与消息 ' SQLSTATE [HY000]:常规错误:-104 [ODBC Firebird 驱动程序] [Firebird]动态SQL错误SQL错误代码= -104意外 命令行第1行第15列(SQLExecDirect [-104] at 分机\ PDO_ODBC \ odbc_driver.c:247)'在 d:\ PROGRAMMAZIONE \ ricoplast \ COM \ db.php中:25
有人可以帮助我吗?
PS:当我使用不同的ODBC驱动程序执行相同操作时:
$pdo = new PDO("odbc:DRIVER={Microsoft Access Driver (*.mdb)}; ...
查询有效。
答案 0 :(得分:3)
问题在于
select 1+1 as somma
不是有效的Firebird查询,您需要有一个表从哪里选择。尝试
select 1+1 as somma from rdb$database
Firebird中的rdb$database
表与Oracle中的dual
类似。
答案 1 :(得分:0)
谢谢。我找到了问题所在。当我必须执行查询时,我必须在"
之间加上字段,以便db可以识别列。
另一个问题:
我如何绕过我的数据库名称空间。我必须使用我客户的数据库名称。似乎像name something.eft
,但如果我使用那个名字firebird说他找不到数据库
SQLDriverConnect: -902 [ODBC Firebird Driver]File Database is not found'
有人能再帮我一次吗?