如何在单个 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());
}
我得到一个
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());
}