gpt4 book ai didi

php - MeekroDB 错误 "Commands out of sync; you can' t 现在运行此命令”

转载 作者:行者123 更新时间:2023-11-29 02:30:34 24 4
gpt4 key购买 nike

我有一个包含以下行的 PHP 脚本:

require_once 'meekrodb.2.1.class.php';
DB::$user = 'usr';
DB::$password = 'pwd';
DB::$dbName = 'db';
DB::$encoding = 'utf8';

$results = DB::queryFirstField("
CALL getSequence('time_id', %i); // ***** Stored procedure call *****
", TENANT_ID);

DB::insert('timeentry', array(
'tenant_id' => TENANT_ID,
'time_id' => $results,
'timestart' => DB::sqleval("now()"),
'assig_id' => $assig_id
));

我收到以下错误:

QUERY: INSERT INTO timeentry (tenant_id, time_id, timestart, assig_id) VALUES (1, '42', now(), '1')

ERROR: Commands out of sync; you can't run this command now

如果我用 SELECT 语句替换对存储过程的调用,一切正常。

$results = DB::queryFirstField("
SELECT 45; // ***** SELECT statement *****
");

DB::insert('timeentry', array(
'tenant_id' => TENANT_ID,
'time_id' => $results,
'timestart' => DB::sqleval("now()"),
'assig_id' => $assig_id
));

我没有分析 MeekroDB 库 (http://www.meekro.com) 的内部结构。

我尝试将每条语句包装在一个事务中,但在调用存储过程后立即执行 COMMIT 时,我得到了同样的错误。

非常感谢任何帮助。

最佳答案

调用 MySQL 中的存储过程会产生多个结果集。也就是说,存储过程可能有多个 SELECT,因此客户端必须遍历多个结果集才能完成 CALL 的处理。

请参阅此问题答案中的示例:Retrieving Multiple Result sets with stored procedure in php/mysqli

在 CALL 的所有结果完成之前,它不会被视为关闭,并且 MySQL 不允许您在当前查询完全完成之前运行另一个查询。

我不太了解 MeekroDB 库,但浏览了在线文档,我没有看到任何迭代多个结果集的方法。所以可能没有任何方法可以安全地调用存储过程。具体支持建议联系作者:http://www.meekro.com/help.php .

关于php - MeekroDB 错误 "Commands out of sync; you can' t 现在运行此命令”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13868648/

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