我正在使用PHP訪問IBM i(AS400)上的DB2信息。爲什麼在簡單的DB2 select語句中會出現「數據轉換或數據映射錯誤。SQLCODE = -802」?
有了這個代碼:
$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
行1成功
行2次成功
第3行成功
第4排成功
數據轉換或數據映射錯誤。 SQLCODE = -802
應該有4個以上的結果。 爲什麼會發生此錯誤?
更多細節:
- 此相同的錯誤似乎對我MyField的搜索任何價值的情況發生,雖然它可能是一個不同數量的中標結果
- MyField的是數字(7,0) 後
- 我可以搜索表中的其他字段(包括數字),它工作正常。
MYTABLE不是一個視圖。對於php變量,數據值如何變大?我試着做一個只返回一列的select。所以我認爲這將消除$ row被超載的可能性。 – Mike 2011-02-16 13:19:38
溢出PHP變量可能很容易。但是因爲你使用`SELECT * FROM ...`,並且沒有向我們顯示列定義,所以我們不能說出它在這裏發生的原因。在生產代碼中,`SELECT * FROM ...`本質上不應該被使用;指定一個明確的_column-list_或者簡單地接受將永遠不會找到各種答案。 – user2338816 2014-04-03 04:27:34