我在尝试从此查询中获取结果后收到此动态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;
}
怎么会有不正确的值?你是如何解决这个问题的?
答案 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)。