php - 调用 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);
?>
解决方案
是的,这主要是您的猜测。如果混合使用 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 代码正常工作。
推荐阅读
- c# - C# 虚拟键修饰键使用发送输入法失败
- android - 我的 gradlew.bat 在 tns build android 上一直失败
- javascript - 无法让我的 Google 可视化饼图和表格溢出滚动条工作
- c# - 发送响应后保存到数据库(.NET Core 和 EF Core)
- c# - 如何使用区域短日期将 DateTime 转换为字符串
- r - 从 app.R 中调用 Source_python 时不起作用
- python - 我可以允许 tkinter 的 mainloop() 和 GLUT 的 glutMainLoop() 同时运行吗?
- laravel - Uppy "PUT" XHR(multipart/form-data) 请求结果清空 Laravel $request 数组
- google-cloud-platform - Google Cloud Storage:请求的资源上不存在“Access-Control-Allow-Origin”标头
- elasticsearch - Elasticsearch 查询花费大量时间来检索文档