PHP mysqli_query在foreach循环中不起作用

时间:2017-10-03 22:26:54

标签: php mysql mysqli foreach

我有一个foreach循环,它在MySQL数据库中运行一系列表名,然后执行mysqli查询以重新索引表。

查询和循环似乎都工作正常,但是在一定数量的表之后查询停止工作。

如果我只是回显每个表名,那么它将显示所有这些表,所以我知道它不会错过循环中的表,我可以看到前几个表正在重新编制索引。它似乎在大约50张桌子后停止工作。

这是循环:

foreach($tables as $table) {
    mysqli_multi_query($connect, "SET @newid=0; UPDATE $table SET ID=(@newid:=@newid+1) ORDER BY ID;");
}

可能导致它停止工作的原因是mysql超时还是破坏了操作,因为很多查询都在快速连续运行?还有别的吗?

使用mysqli_error我得到:

  

命令不同步;你现在不能运行这个命令

1 个答案:

答案 0 :(得分:1)

每当我看到这个错误之前,因为MySQL查询返回了多个结果集,其中一些仍然没有得到解决。这在使用存储过程时也很常见。要诊断此问题的原因是您可以在循环结束时放置如下所示的行,以确保在尝试运行另一个查询之前获取任何挂起的结果集:

while(mysqli_more_results($Conn)) mysqli_next_result($Conn);

(请记住将连接$Conn更改为您调用的连接)。以下是一些指向更多信息和示例的链接。

http://php.net/manual/en/mysqli.more-results.php https://www.w3schools.com/php/func_mysqli_next_result.asp

此致

詹姆斯