【问题标题】:What may be the cause to my php code does not run after mysqli_multi_query is called?调用 mysqli_multi_query 后我的 php 代码无法运行的原因可能是什么?
【发布时间】:2019-09-30 06:04:38
【问题描述】:

我只是尝试在我的 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);
?>

【问题讨论】:

  • 不要写句子,而是向我们展示您的代码并解释您的问题所在,我们只有在看到您的代码时才能提供帮助。
  • 对不起。我创建了一些代码来演示和更新问题。
  • 奇怪。但尝试一次:- $sql1 = "insert into test (testCol) values(1);"; $sql1 .= "insert into test (testCol) values(2);"; if(mysqli_multi_query($con, $sql1 )){ echo "Success"; } mysqli_close($con);
  • 感谢 Anant Singh 的快速回复,我会尝试您的建议并发布结果。由于我没有检索查询执行的结果,是否有可能发生这种情况?
  • 我很困惑,这就是我说奇怪的原因。因为您显示的代码在我的最后实际上运行良好。

标签: php crash mysqli-multi-query


【解决方案1】:

是的,这主要是您的猜测。 如果混合使用 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 代码正常工作。

【讨论】:

  • 是的,这正是我的猜测。在其余的 php 代码中可能有以下 mysqli_query 语句,因此它是较大的 php 文件。谢谢Ruwan Kumara。
猜你喜欢
  • 1970-01-01
  • 2019-12-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-01
  • 1970-01-01
  • 2019-05-26
  • 1970-01-01
  • 2022-09-23
相关资源
最近更新 更多