首页 > 解决方案 > 调用 mysqli_multi_query 后我的 php 代码无法运行的原因可能是什么?

问题描述

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

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

当我在循环中将“mysqli_multi_query”替换为“mysqli_query”时,整个 php 代码都可以正常工作。

这是一种已知的行为,还是我需要了解有关“mysqli_multi_query”的其他信息?mysqli 是否异步执行多个查询?

很抱歉,我的代码在家用电脑上,直到下周末才能在这里发布。我通过在工作台上手动运行检查了所有查询,它们运行良好。

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

我在这里看到了一些类似的帖子,但没有一个能正确解决我的问题。任何支持将不胜感激。

代码是这样的..

<?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);
?>

标签: phpcrashmysqli-multi-query

解决方案


是的,这主要是您的猜测。如果混合使用 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!

您只需要使用/刷新结果即可使其余的 php 代码正常工作。


推荐阅读