我正在使用PHP访问IBM i(AS400)上的DB2信息.
使用此代码:
$query = "SELECT * FROM QS36F.MYTABLE WHERE MYFIELD=120006";
$result = db2_prepare($conn, $query);
db2_execute($result);
$i=0;
while($row = db2_fetch_assoc($result) or die(db2_stmt_errormsg())){
$i++;
print "Row " . $i . " successful<br />";
}
我明白了:
SELECT * FROM QS36F.MYTABLE WHERE MYFIELD=120006
Row 1 successful
Row 2 successful
Row 3 successful
Row 4 successful
Data conversion or data mapping error. SQLCODE=-802
应该有超过4个结果.
为什么会发生这种错误?
更多细节:
>同样的错误似乎发生在我在MYFIELD中搜索的任何值,尽管它可能是在不同数量的成功结果之后
> MYFIELD是NUMERIC(7,0)
>我可以搜索表中的其他字段(包括数字字段),它工作正常.
解决方法:
表中存在无效的十进制数据.有空白而不是零.我将零移动到那些空白中并解决了问题