gpt4 book ai didi

php - 除非我关闭 mysqli 连接,否则连续查询不会运行

转载 作者:搜寻专家 更新时间:2023-10-31 22:01:50 25 4
gpt4 key购买 nike

我有 2 个必须运行的查询:

  1. 存储过程中的复杂 SELECT 查询,用于确定我需要修改的记录。
  2. 使用第一个修改同一表中值的记录 ID 的更新。

我尝试从第一个到关闭获得结果,以便我可以运行第二个,但我可以这样做而不会出现此错误的唯一方法:

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

就是关闭mysqli连接,重新创建。

这是我的代码的本质:

//  The $sql is to run a stored procedure.  I omitted that code
// because it's very lengthy, but it works perfectly every time.
// The stored procedure is basically a recursive SELECT query to
// pull hierarchical data from a self-referencing data set.

$res = mysqli_query($mysqli, $sql);

// Build a comma-delimited list of id numbers
$ids = "";
$i = 0;
$qty = mysqli_num_rows($res);
while ($recs = mysqli_fetch_array($res)) {
$i += 1;
$ids .= $recs["data_id"];
if ($i < $qty) $ids .= ", ";
}
mysqli_free_result($res);

// Close connection to MySQL (Remove this & connect statement below causes it to fail)
mysqli_close($mysqli);

// Re-open connection to MySQL (Remove this & close statement above causes it to fail)
$mysqli = connect_DB();

$sql = "UPDATE data SET data_val = data_val + ".$val." WHERE data_id IN (".$ids.")";

$res = mysqli_query($mysqli, $sql);

我已经尝试了我发现的所有建议(包括来自 stackoverflow 帖子的十几个),但没有任何效果。我错过了什么?必须这样做似乎是不合理的,尤其是考虑到我可以使用“free_result”语句连续运行其他查询。

最佳答案

这是由已知的“内部 SQL 错误”引起的,命令不同步。因此,必须关闭并重新打开连接以使命令恢复同步。

用户贡献的注释中的引用: http://php.net/manual/en/mysqli-result.free.php

关于php - 除非我关闭 mysqli 连接,否则连续查询不会运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27613372/

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