调用 mysqli_multi_query 后我的 php 代码没有 运行 的原因可能是什么?

What may be the cause to my php code does not run after mysqli_multi_query is called?

我只是尝试在我的 php 代码中使用 "mysqli_multi_query" 函数(查询由分号分隔)并且它正确地插入了数据。

调用 "mysqli_multi_query" 后我没有收到任何错误。但是 "mysqli_multi_query" 语句下面的 php 代码(简单的回显测试)没有达到。

当我在循环中用 "mysqli_query" 替换 "mysqli_multi_query" 时,总的 php 代码可以正常工作。

这是已知行为还是我需要了解有关 "mysqli_multi_query" 的其他信息? mysqli 是异步执行多个查询吗?

很抱歉,我的代码在家里的电脑上,下周末才能post在这里。我在 workbench 上手动 运行 检查了所有查询,它们运行良好。

我仍然可以通过 运行 在 for 循环中单独查询每个查询来解决此问题,但希望通过 "mysqli_multi_query" 减少数据库命中次数并提高性能。

我在这里看到了一些类似的 post,但其中 none 正确地解决了我的问题。非常感谢任何支持。

代码是这样的..

<?php
$con=mysqli_connect("localhost","my_user","my_password","my_db");

if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$sql1 = "insert into test (testCol) values(1);";
$sql2 = "insert into test (testCol) values(2);";

mysqli_multi_query($con, $sql1.$sql2 ); /* data inserted properly in test table. No error. */

/* Any code below here is not reached. But when I used below commented queries instead of above (mysqli_multi_query), echo is called.

    mysqli_query($con, $sql1); 
    mysqli_query($con, $sql2); 

 */

echo "Success"; 

mysqli_close($con);
?>

是的,这主要是您的猜测。 如果混合使用 mysqli_multi_query 和 mysqli_query,后者将不会被执行!

问题代码:

$mysqli->multi_query(" Many SQL queries ; "); //works
$mysqli->query(" SQL statement #1 ; ") // not works!

正确执行此操作的唯一方法是:

$mysqli->multi_query(" Many SQL queries ; "); // works
while ($mysqli->next_result()) {;} // flush multi_queries
$mysqli->query(" SQL statement #1 ; ") // works!

您只需 use/flush 个结果即可使其余 php 代码正常工作。