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

时间:2015-09-12 14:38:38

标签: php sql interbase

我在尝试从此查询中获取结果后收到此动态sql警告:

警告:ibase_fetch_assoc():动态SQL错误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;      
        }

怎么会有不正确的值?你是如何解决这个问题的?

2 个答案:

答案 0 :(得分:0)

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

因为Sql查询看起来没问题,我只能想到字段名中可能有拼写错误或者没有返回行。或者where字段不是数字

我也可以建议使用别名而不是完整的表名,这有助于阅读查询。

{{1}}

答案 1 :(得分:0)

不知道你是否已经解决了这个问题,但是我在一个简单的查询中遇到了同样的错误:

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

在我用列名替换*后,它对我有用:

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

我认为它与interbase驱动程序有关,我发现了这个: Bug report

似乎php interbase客户端无法处理布尔字段,在我更改了整数中的布尔字段后,select *起作用。

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