gpt4 book ai didi

php - PDO 无法在其他无缓冲查询处于事件状态时执行查询

转载 作者:行者123 更新时间:2023-11-29 01:05:38 24 4
gpt4 key购买 nike

我知道这必须是一个简单的修复,我部分理解为什么会收到此错误但不知道如何修复它。我查看了文档,但除了使用缓冲查询选项外找不到解决方案。我也试过了,但没用。

错误是:PDO Cannot execute queries while other unbuffered queries are active

错误来 self 构建 $result 数组的行。

foreach($phones as $phone)
{
$stmt = db::getInstance()->prepare("CALL phones(:phone)");
$stmt->bindParam(':phone', $phone, PDO::PARAM_INT, 10);
$stmt->execute();

$result[] = db::getInstance()->query("SELECT @phone;")->fetchAll(PDO::FETCH_ASSOC);
}

最佳答案

举个例子

CREATE TABLE foo (
id int auto_increment,
phone int,
primary key(id),
unique key(phone)
)

示例程序

delimiter //
CREATE PROCEDURE phones(in p INT)
BEGIN
SELECT phone FROM foo WHERE phone > p;
END//
delimiter ;

和一些示例数据

INSERT INTO foo (phone) VALUES (1),(2),(3),(4),(5)

使用 PDOStatement 可以从存储过程中获取结果集。

$pdo = new PDO('mysql:host=localhost;dbname=test', 'localonly', 'localonly');
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$stmt = $pdo->prepare("CALL phones(:phone)");
$stmt->bindParam(':phone', $phone);
$phone = 1;
$stmt->execute();
do {
echo "\nresult set: ";
while($row=$stmt->fetch()) {
echo $row['phone'], " | ";
}
} while($stmt->nextRowset());

打印结果集:2 | 3 | 4 | 5 |

(测试环境:php 5.3.1/winxp,mysql 5.1.37)

do { } while($stmt->nextRowset()); 循环也可能解决您的“原始”问题。

关于php - PDO 无法在其他无缓冲查询处于事件状态时执行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2066802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com