pdo(php5.2.8) 連續 query 後, fetch 失敗的 bug .


1、注意紅色框框部分,使用的是同一個數據庫的連接對象 $pdo 

2、第一次使用以後關閉了cursor,$stmt->closeCursor();

3、第二次 $pdo 查詢的時候,採用了 $stmt->fetch() 的方式取數據 (通過 PDO::MYSQL_ATTR_USE_BUFFERED_QUERY 快速 dump 數據) $val 的值是空的,也就是說 while 這個 fetch 失敗了。通過設置 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 發現拋出了 'SQLSTATE[HY000]: General error: 2050 ' 的異常。

解決辦法是在第一次查詢 $stmt->closeCursor(); 之後,對這個 $stmt 進行 null 銷燬,即 $stmt = null; 加在 195 行後面, 或者換一個新的變量(參考這個問題 http://amiteshkumar.wordpress.com/2010/08/24/php-pdo-error-fix-sqlstatehy000-general-error-2050/ )。

通過一些資料查找,這個應該是很久以前的歷史問題了, 不過覺得很怪異。

參考資料鏈接地址:http://www.justskins.com/forums/35793-com-general-error-25815.html

發佈了127 篇原創文章 · 獲贊 5 · 訪問量 30萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章