gpt4 book ai didi

php - 在 PHP 中,当我使用 PDO 调用 MySQL 存储过程,然后进行另一个查询时,出现错误 :

转载 作者:行者123 更新时间:2023-11-29 04:16:00 25 4
gpt4 key购买 nike

<分区>

在 PHP 中,当我使用 PDO 调用 MySQL 存储过程,然后调用另一个 PDO 查询时,就像这样:

$dbh = new PDO('mysql:host=localhost;dbname=db1','user1','password1');

$query = "CALL get_token()";
$stmt = $dbh->query($query);
$array = $stmt->fetchAll();

$query = "SELECT * FROM `table1`";
$stmt = $dbh->query($query);
$array = $stmt->fetchAll();

MySQL 存储过程大概是这样的:

CREATE PROCEDURE `get_token`()
BEGIN
DECLARE token CHAR(64);
DECLARE expire SMALLINT;

SELECT `token`, `expire` INTO token, expire FROM `token`;

SELECT token, expire;
END$$

我收到以下错误消息(使用 try...catch 来捕获它):

General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.

即使我按照上述错误消息中描述的说明进行操作(这意味着使用 fetchAll() 并设置 PDO::MYSQL_ATTR_USE_BUFFERED_QUERY 属性),我仍然得到同样的错误信息。

如果我将第一个查询更改为普通的 SELECT SQL 查询,而不是 存储过程,我将不会收到此错误。所以看来问题出在存储过程上。

但是我该如何解决呢?

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