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



我得到一个

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文章。

此外,您也可以使用存储过程来处理它。这意味着您的查询将表现为多查询。您可以从以下代码中获得帮助。

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());
}

最新更新