首页 >后端开发 >php教程 >如何使用mysqli在MySQL中同时执行多个INSERT语句?

如何使用mysqli在MySQL中同时执行多个INSERT语句?

Barbara Streisand
Barbara Streisand原创
2024-12-07 19:50:14520浏览

How Can I Execute Multiple INSERT Statements Simultaneously in MySQL Using mysqli?

多个 mysqli 查询:同时运行 INSERT 语句

原始问题:

尝试执行连续使用 mysqli_query() 的两个 INSERT 语句会导致第二次查询失败。此问题源于 MySQL 的安全措施,该措施防止在单个调用中执行多个查询。

解决方案:mysqli_multi_query()

在单个调用中执行多个查询调用时,需要使用 mysqli_multi_query() function:

$query  = "INSERT INTO images (project_id, user_id, image_name, date_created, link_to_file, link_to_thumbnail, given_name) VALUES ('$project_id', '$user_id', '$image_name', '$date_created', '$link_to_file', '$thumbnail', '$ImageName');";
$query .= "INSERT INTO images_history (project_id, user_id, image_name, date_created, link_to_file, link_to_thumbnail, given_name, day, month, year) VALUES ('$project_id', '$user_id', '$image_name', '$date_created', '$link_to_file', '$thumbnail', '$ImageName', '$day', '$month', '$year');";

$result = mysqli_multi_query($mysqli, $query);

处理查询结果

执行 mysqli_multi_query() 返回一个布尔值。然而,使用 mysqli_store_result() 手动检索每个查询的结果并使用 mysqli_more_results() 和 mysqli_next_result() 循环遍历它们是至关重要的:

while (mysqli_more_results($mysqli) && mysqli_next_result($mysqli)) {
    if (($result = mysqli_store_result($mysqli)) === false && mysqli_error($mysqli) != '') {
        echo "Query failed: " . mysqli_error($mysqli);
    }
}

mysqli_multi_query() 的优点

  • 执行多个在一次调用中高效查询。
  • 通过防止查询干扰来维护数据库完整性。

其他注意事项

  • mysqli_store_result()对于没有结果的查询(例如 INSERT 语句)可能会返回 FALSE。使用 mysqli_error() 确认成功。
  • 请参阅 mysqli_multi_query()、mysqli_more_results()、mysqli_next_result() 和 mysqli_store_result() 的文档以了解更多详细信息。

以上是如何使用mysqli在MySQL中同时执行多个INSERT语句?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn