gpt4 book ai didi

php - 如何使用 PHP 一次性在 SQL 中运行多个插入查询?

转载 作者:行者123 更新时间:2023-12-05 01:42:41 24 4
gpt4 key购买 nike

我想运行 mysql 查询以从自定义 html 表单插入数据。在这里我必须插入多组数据,一些数据到一个表,一些到其他表。目前,我正在使用简单的方法使用 jquery ajax 将数据发送到 php 页面,并一个接一个地运行多个 mysqli_query() 函数。但是我想当用户量大的时候,就会出现速度相关的问题。所以任何人都可以建议我一个更好的方法来做同样的事情。

数据库中有 5 个表,每个表有 7 到 10 列,每次需要获取不同的数据集。

我只想在前一个插入查询成功完成后才运行每个查询。这就是为什么我每次都检查结果,然后运行下一个查询,这让我感受到了大用户群的速度问题。

最佳答案

The problem is, I need to insert data to first table and if its successfully inserted then only run query for the second table.

这意味着您需要一个 transaction .

事务是一组查询,要么全部执行正常,要么如果一个失败 - 它们都失败。这是为了确保您最终不会在表中得到垃圾数据。

不要

  • 不要使用多查询。
  • 不要使用 mysql_* 函数。
  • 不要使用批量插入。

告诉您这样做的人完全不知道他们在做什么,请忽略他们。

示例代码 - 不要复制粘贴

$dsn = 'mysql:dbname=testdb;host=127.0.0.1;charset=utf8mb4';
$user = 'dbuser';
$password = 'dbpass';

$pdo = new PDO($dsn, $user, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$insert['first'] = $pdo->prepare("INSERT INTO table SET col1 = :val, col2 = :val2");
$insert['second'] = $pdo->prepare("INSERT INTO another_table SET col1 = :val, col2 = :val2");

$pdo->beginTransaction();

$insert['first']->bindValue(':val', 'your value');
$insert['first']->bindValue(':val2', 'anothervalue');
$insert['first']->execute();

$insert['second']->bindValue(':val', 'your value');
$insert['second']->bindValue(':val2', 'anothervalue');
$insert['second']->execute();

$pdo->commit();

只有当两个插入都成功时,上面的代码才会将数据保存在两个表中。

关于php - 如何使用 PHP 一次性在 SQL 中运行多个插入查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51285074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com