带有ODBC Firebird驱动程序的PHP中的SQL SELECT with FROM子句

带有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

我可以用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 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
-子句。。