有没有办法var_dump当前活动的无缓冲查询

时间:2015-04-23 20:56:37

标签: php mysql pdo

TL; DR 我不知道如何让错误消失,我不想再次知道我可以使用fetchAll()和/或转弯缓冲查询。

关于这个错误的又一个问题:

  

SQLSTATE [HY000]:常规错误:2014在其他未缓冲的查询处于活动状态时无法执行查询。

t h e r e a r e关于此的无数帖子,他们很棒,但那不是我的兴趣。

我不想让错误消失,我想知道是否有办法识别哪些无缓存的查询仍处于活动状态?

由于我只使用MySQL,而我的应用程序只能运行MySQL,我当然可以

  

考虑使用PDOStatement :: fetchAll()。或者,如果您的代码只是针对mysql运行,则可以通过设置PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY属性来启用查询缓冲

但这不是重点。

man page for pdo似乎没有办法执行此操作,inTransaction()方法不适用,因为我没有使用交易。

如果它可以提供帮助,所有查询都是预备语句,只需准备好sql就可以帮助我找出哪些查询没有被完整提取。

var_dumping PDO对象产生一个不太有用的结果:

object(PDO)#31 (0) { } 

我的梦想是能够使用这样的东西:

var_dump($pdo->showActiveQueries());

会返回类似

的内容
array(2) { 
    [0]=> string(19) "SELECT foo FROM bar" 
    [1]=> string(21) "SELECT 2foo FROM 2bar" 
}

1 个答案:

答案 0 :(得分:1)

我的理解是你一次只能做一个无缓冲的查询,所以如果是这样的话,那么它不是你得到错误之前运行的最后一个查询吗?< / p>

如果您正在使用某种数据库抽象,那么您可以抓住最后一个成功的查询,这将是导致错误的查询。

您是否尝试关闭在创建新查询之前运行的上一个查询的光标? http://us.php.net/manual/en/pdostatement.closecursor.php

  

PDOStatement::closeCursor()释放与服务器的连接,以便可以发出其他SQL语句,但使语句处于使其能够再次执行的状态。