pdo(php5.2.8) 连续 query 后, fetch 失败的 bug .

时间:2022-09-14 19:17:19

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