带有ODBC Firebird驱动程序的PHP中的SQL SELECT with FROM子句
我可以用Firebird驱动程序连接.eft数据库文件,如下所示:带有ODBC Firebird驱动程序的PHP中的SQL SELECT with FROM子句,php,sql,database,pdo,firebird,Php,Sql,Database,Pdo,Firebird,我可以用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]:一般错误:-10
$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
ext\pdo_odbc\odbc_driver.c:247)'in
D:\PROGRAMMAZIONE\ricoplast\com\db.php:25
有人能帮我吗?
PS:当我对不同的ODBC驱动程序执行相同操作时:$pdo=new-pdo(“odbc:DRIVER={Microsoft-Access-DRIVER(*.mdb)};…
查询正常。问题在于
select 1+1 as somma
不是有效的Firebird查询,您需要从中选择一个表。请重试
select 1+1 as somma from rdb$database
Firebird中的
rdb$数据库
表类似于Oracle中的dual
。谢谢大家。我找到了问题所在。当我必须进行查询时,我必须将字段包围在“
之间,以便db能够识别列
另一个问题:
如何绕过数据库名称上的空格。我必须使用客户的数据库名称。这似乎像命名某个东西。eft
,但如果我使用该名称,firebird会说他找不到数据库
SQLDriverConnect: -902 [ODBC Firebird Driver]File Database is not found'
有人能再帮我一次吗?-“SQL SELECT语句从一个或多个表返回记录的结果集”SQL标准和Firebird SQL语法都需要select中的
from
子句。有些数据库系统不需要,但Firebird需要。@MarkrotVeel嗯,至少按照SQL'99标准,它应该是select*from(values(1+1))
,但我不知道有多少真正的数据库支持它。遗憾的是,Firebird也不需要(这可能有助于在查询中创建临时伪表)@Arioch'当然可以,但是您仍然有一个from
-子句。。