您的位置:

PHP实现MySQL插入多条数据操作

一、前言

针对数据插入操作,通常我们使用 SQL 语句在 MySQL 数据库中执行 INSERT INTO 语句,实现数据插入。对于单条数据插入,我们通常使用 PHP 的 mysqli 或 PDO 等扩展进行操作。但如果需要一次性向数据库插入多条数据时,循环多次插入会导致性能问题,这时我们可以使用PHP的 array_chunk 函数和 mysqli 或 PDO 的批量插入操作完成对大量数据的快速插入。

二、使用mysqli扩展批量插入数据

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

  1. 创建mysqli对象;
  2. 准备要插入的数据,并使用array_chunk函数按照指定大小进行拆分;
  3. 使用beginTransaction函数开始事务;
  4. 循环插入数据,使用prepare函数,绑定参数,执行处理执行语句;
  5. 使用commit函数提交事务;
  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扩展进行批量插入数据的示例代码。

三、使用PDO扩展批量插入数据

使用PDO扩展进行批量插入的主要步骤:

  1. 创建PDO对象;
  2. 设置错误模式为异常模式;
  3. 准备要插入的数据,并使用array_chunk函数按照指定大小进行拆分;
  4. 使用beginTransaction函数开始事务;
  5. 循环插入数据,使用prepare函数,绑定参数,执行处理执行语句;
  6. 使用commit函数提交事务;
  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扩展进行批量插入数据的示例代码。

四、结语

以上是针对如何使用PHP扩展实现MySQL批量插入多条数据的介绍。在线上系统中操作大量数据时,尽可能使用批量插入的方式,是提高性能的一个重要措施。同时,需要注意参数绑定和SQL注入等安全问题。