如何在单个 PHP 文件中 运行 多个 SQL 调用过程

How to run multiple SQL call procedures in a single PHP file

我得到一个

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

当我尝试 运行 我的第二个 SQL 存储过程时出错。第一次调用执行得很好,但是当我在代码的其他地方调用第二个 SQL 过程时,我看到了这个错误。在添加第二个连接之前是否必须关闭第一个连接?

第一次调用程序:

<center><?php
    $sql="call DisplayRandomTable('db', 'table1', 10)";
    $result = mysqli_query($conn, $sql);
?></center>

第二次调用过程://此处出错

<?php
    $sql="call GetTableCount('bista', 'S_Student')";
    $result = mysqli_query($conn, $sql);
?>

希望您身体健康。这是因为您不能同时进行两个查询,因为 mysqli 默认情况下对准备好的语句使用无缓冲查询。您可以将第一个提取到数组中并循环遍历它,或者告诉 mysqli 缓冲查询。

您可以使用以下代码来缓冲查询:

$stmt->store_result()

要了解更多与此相关的细节,我建议您详细阅读mysqli_query文章。

此外,您也可以使用存储过程来处理它。这意味着您的查询将表现得像 multi-query。您可以通过以下代码获得帮助。

while($this->mysql->more_results())
{
    $this->mysql->next_result();
    $this->mysql->use_result();
}

一招: 我创建了一个在执行 mysqli_query 后调用的函数。这有助于我从缓冲区中删除之前获取的结果。

function clearStoredResults()
{
    global $conn;
    do
    {
        if ($res = $conn->store_result())
        {
            $res->free();
        }
    }
    while ($conn->more_results() && $conn->next_result());
}