Code前端首页关于Code前端联系我们

PHP通过插入多个数据操作来实现MySQL

terry 2年前 (2023-09-29) 阅读数 49 #PHP
文章标签 PHP

1。前言

在数据插入操作中,我们通常使用SQL语句在MySQL数据库中执行INSERT INTO语句来实现数据插入。对于单个数据插入,我们通常使用 PHP 扩展,例如 mysqli 或 PDO。但是,如果需要一次将多个数据插入数据库,则循环多次插入可能会导致性能问题。这种情况下,我们可以利用PHP的array_chunk函数以及mysqli或PDO的批量插入操作来快速插入大量数据。

2。使用mysqli扩展批量插入数据

使用mysqli扩展批量插入的主要步骤:

  1. Mysqli 对象创建;
  2. 准备好要插入的数据,用array_chunk函数按照指定的大小进行划分;
  3. 使用beginTransaction函数开始交易;
  4. 将数据插入循环,使用准备功能,分配参数并执行加工执行指令;
  5. 使用finalize函数来完成交易;
  6. 关闭连接。
<?php
// 创建mysqli对象
$mysqli = new mysqli('localhost', 'username', 'password', 'database');

// 要插入的数据
$data = array(
    array('name1', 'age1', 'address1'),
    array('name2', 'age2', 'address2'),
    array('name3', 'age3', 'address3'),
    //...
);

// 拆分数据
$data_chunk = array_chunk($data, 1000);

// 开启事务
$mysqli->begin_transaction();

// 插入数据
foreach ($data_chunk as $chunk) {
    $stmt = $mysqli->prepare("INSERT INTO `table`(`name`, `age`, `address`) VALUES (?, ?, ?)");

    foreach ($chunk as $row) {
        $stmt->bind_param('sss', $row[0], $row[1], $row[2]);
        $stmt->execute();
    }

    $stmt->close();
}

// 提交事务
$mysqli->commit();

// 关闭连接
$mysqli->close();

上面使用 mysqli 扩展批量插入数据的示例代码。

3。使用OEM扩展批量插入数据

OEM扩展批量充值主要步骤:

  1. OEM 对象创建;
  2. 将错误模式设置为异常模式;
  3. 准备好要插入的数据,用array_chunk函数按照指定的大小进行划分;
  4. 使用beginTransaction函数开始交易;
  5. 将数据插入循环,使用准备功能,分配参数并执行加工执行指令;
  6. 使用finalize函数来完成交易;
  7. 关闭连接。
<?php
// 创建PDO对象
$pdo = new PDO('mysql:host=localhost;dbname=database', 'username', 'password');
// 设置错误模式为异常模式
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// 要插入的数据
$data = array(
    array('name1', 'age1', 'address1'),
    array('name2', 'age2', 'address2'),
    array('name3', 'age3', 'address3'),
    //...
);

// 拆分数据
$data_chunk = array_chunk($data, 1000);

// 开启事务
$pdo->beginTransaction();

// 插入数据
foreach ($data_chunk as $chunk) {
    $stmt = $pdo->prepare("INSERT INTO `table`(`name`, `age`, `address`) VALUES (?, ?, ?)");

    foreach ($chunk as $row) {
        $stmt->bindParam(1, $row[0]);
        $stmt->bindParam(2, $row[1]);
        $stmt->bindParam(3, $row[2]);
        $stmt->execute();
    }
}

// 提交事务
$pdo->commit();

// 关闭连接
$pdo = null;

上面的示例代码用于批量插入带有PDO扩展的数据。

4。结论

上面展示了如何使用PHP插件批量插入多条数据到MySQL中。如果在线系统中运行大量数据,提高性能的一个重要措施是尽可能使用批量插入。但是,您应该注意参数绑定和 SQL 注入等安全问题。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门