动态SQL错误804 SQLDA结构中不正确的值


Dynamic SQL Error 804 Incorrect values within SQLDA structure

我得到这个动态sql警告后,试图从这个查询获取结果:

警告: ibase_fetch_assoc(): Dynamic SQL Error SQL错误码= -804 SQLDA结构中不正确的值

SELECT VOORRAADAUTO.*, AUTOMERK.*, VOORRAADAUTO.OMSCHRIJVING as uitvoeringnaam 
FROM VOORRAADAUTO 
LEFT JOIN AUTOMERK ON AUTOMERK.AUTOMERKID = VOORRAADAUTO.AUTOMERKID 
WHERE VOORRAADAUTO.SOORTVOORRAADSTATUSID = 2 AND VOORRAADAUTO.TOTAALCONSUMENT > 0 ORDER BY AUTOMERK.OMSCHRIJVING DESC, VOORRAADAUTO.TOTAALCONSUMENT, VOORRAADAUTO.MODELOMSCHRIJVING;

和这个php代码:

        $p_sql = ibase_prepare($sql);
        $rs = ibase_execute($p_sql);
        while($row = ibase_fetch_assoc($rs)){
            $auto = new auto($row);
            $this->list[] = $auto;      
        }

为什么会有不正确的值?如何解决这个问题呢?

您可以尝试在数据库上直接运行sql。

因为Sql查询看起来不错,我只能认为也许有一个字段名错字或不返回行。或者where字段不是数字

我还建议使用别名而不是完整的表名,这有助于读取查询。

SELECT V.*, A.*, V.OMSCHRIJVING as uitvoeringnaam 
FROM VOORRAADAUTO V
LEFT JOIN AUTOMERK A
   ON A.AUTOMERKID = V.AUTOMERKID 
WHERE V.SOORTVOORRAADSTATUSID = 2 AND V.TOTAALCONSUMENT > 0 
ORDER BY A.OMSCHRIJVING DESC, V.TOTAALCONSUMENT, V.MODELOMSCHRIJVING;

不知道你是否已经解决了它,但我有同样的错误与一个简单的查询,如:

SELECT * FROM "any_Table" WHERE "id"=1

它为我工作后,我用列名替换*:

SELECT "id", "Name" FROM "any_table" WHERE "id"=1 

我认为这与interbase驱动程序有关,我发现了这个:错误报告

似乎php interbase客户端不能处理布尔字段,当我将布尔字段更改为整数后,select *工作。

我正在使用XAMPP, PHP版本5.6.15,在windows上使用interbase XE7,并使用来自interbase安装(12.0.4.357)的gds32.dll。