Php PDO MySQL调用返回未缓冲查询错误

Php PDO MySQL调用返回未缓冲查询错误,php,mysql,stored-procedures,pdo,Php,Mysql,Stored Procedures,Pdo,我曾在网上进行过研究,但大多数示例或说明似乎并不适用于我试图完成的任务 简而言之,我的代码应该完成以下任务: 从我的php脚本中调用一个存储过程,该脚本返回一个我想要循环使用的数据集,并在表中生成行(用于在线显示)。但是,我的表中的一个字段必须调用一个单独的表(甚至不需要首先使用存储过程)来计算受UserID影响的行总数 下面的脚本返回此错误: SQLSTATE[HY000]:一般错误:当其他未缓冲查询处于活动状态时,2014无法执行查询。考虑使用pdoCalp::FutAccess()。或者,

我曾在网上进行过研究,但大多数示例或说明似乎并不适用于我试图完成的任务

简而言之,我的代码应该完成以下任务:

从我的php脚本中调用一个存储过程,该脚本返回一个我想要循环使用的数据集,并在表中生成行(用于在线显示)。但是,我的表中的一个字段必须调用一个单独的表(甚至不需要首先使用存储过程)来计算受UserID影响的行总数

下面的脚本返回此错误:

SQLSTATE[HY000]:一般错误:当其他未缓冲查询处于活动状态时,2014无法执行查询。考虑使用pdoCalp::FutAccess()。或者,如果您的代码只在mysql上运行,您可以通过设置PDO::mysql_ATTR_USE_BUFFERED_query属性来启用查询缓冲

代码: 删除它们可以“摆脱”错误,但我无法提取每个结果行集所需的$foundrows变量


以前有人遇到过这个问题吗?

因为您的查询不包含限制,我不知道您为什么要使用。您不能简单地
从活动中选择COUNT(*),其中AGENT='$row[AGTNO]

编辑:

事实上,如果我多读一点字里行间的内容,我认为你可以在一个查询中得到你所需要的一切。这可能过于简化了,因为我没有
hier
过程的所有细节,但它可能类似于:

SELECT ag.AGTNO, ag.AGTCOMMLVL, /* etc. */, count(ac.AGENT) as foundrows
    FROM agent ag
        LEFT JOIN activity ac
            on ag.AGTNO = ac.AGENT

@乔-我遇到了与上面相同的问题,不管是什么问题。这是光标设置方式的一个错误,因此我的主要问题是我无法进入通话周期(我假设,因为第一个调用仍在使用foreach循环运行。另外-在多个地方已经记录了脚本是PDO调用的正确方法:@JM4:查看我编辑的答案,以获取第一个查询中的计数。@Joe-计数不是问题。请查看上面发布的错误,foundrows与否,我有在一个查询之前,在$FuffersSQL之前停止查询$jsql语句。@ JM4:我想指出的是,我认为您可以将活动计数合并到HIER程序中,并且完全消除对第二SQL调用的需要。您考虑了实际错误消息中的指令吗?@他是我问题的第一行。我已经根据给出的错误搜索过了,但是使用fetchALL不适用于我的代码现在的布局方式(这不适用,因为我的行的循环发生在foreach期间)。此外-我还尝试通过使用:$db->setAttribute(PDO::MYSQL\u ATTR\u USE\u BUFFERED\u QUERY)使用无缓冲查询;将整个结果集作为行数组获取与在可遍历PDO语句中循环结果之间有什么区别?没有显示任何代码会使您使用其中一个。我认为您无法通过set属性设置缓冲查询属性…您必须在选项数组中将其设置为
PDO
构造器。
$sql = $db->query("SELECT AGENT FROM activity WHERE AGENT = '$row[AGTNO]");
$foundrows = $db->query("SELECT FOUND_ROWS()")->fetchColumn();
SELECT ag.AGTNO, ag.AGTCOMMLVL, /* etc. */, count(ac.AGENT) as foundrows
    FROM agent ag
        LEFT JOIN activity ac
            on ag.AGTNO = ac.AGENT