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

如何使用PHP批量向MySQL数据库插入数据

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

很多场景下,我们需要同时向MySQL数据库插入大量数据。此时,输入个人数据将非常耗时。因此,使用批量插入可以显着提高数据插入的效率。本文将介绍如何使用PHP向MySQL数据库批量插入数据。

1。准备工作

在开始写代码之前,我们需要做一些准备工作:

1。确保您已安装 PHP 和 MySQL,并且两者已成功连接。

2。创建数据库和数据表。这是我们将使用的表结构的示例:

CREATE TABLE `user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL DEFAULT '',
  `password` varchar(50) NOT NULL DEFAULT '',
  `email` varchar(100) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

3。准备您的数据。这里我们将使用包含 100 条记录的 CSV 文件。每条记录包含三个字段:用户名、密码和电子邮件:

username,password,email
user1,123456,user1@example.com
user2,123456,user2@example.com
user3,123456,user3@example.com
...(省略)
user98,123456,user98@example.com
user99,123456,user99@example.com
user100,123456,user100@example.com

2。逐行读取CSV文件并批量插入数据

接下来我们将使用PHP逐行读取CSV文件中的数据,并批量插入到MySQL数据库中。

1。连接MySQL数据库

首先我们需要连接MySQL数据库。这里我们使用PDO扩展,通过PDO对象连接MySQL数据库:

$dsn = 'mysql:host=localhost;dbname=test;charset=utf8mb4';
$user = 'root';
$password = '123456';

try {
    $pdo = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    die('Connection failed: ' . $e->getMessage());
}

2。打开 CSV 文件

接下来我们需要打开CSV文件并逐行读取其中的数据。这里我们使用fopen函数打开CSV文件,使用fgetcsv函数逐行读取数据:

$file = 'test.csv';

if (($handle = fopen($file, 'r')) !== false) {
    while (($data = fgetcsv($handle)) !== false) {
        // TODO: 批量插入数据
    }
    fclose($handle);
} else {
    die('Cannot open file');
}

3。批量输入数据

接下来,我们需要将加载的数据逐行批量插入到MySQL数据库中。这里我们使用准备好的PDO语句,通过bindParam方法绑定变量,并循环运行run方法来实现批量注入:

$sql = 'INSERT INTO `user` (`username`, `password`, `email`, `created_at`) VALUES (:username, :password, :email, NOW())';

$stmt = $pdo->prepare($sql);
$stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $password);
$stmt->bindParam(':email', $email);

$count = 0;

foreach ($data as $row) {
    list($username, $password, $email) = $row;

    if ($stmt->execute()) {
        $count++;
    }
}

echo 'Total inserted: ' . $count;

完整代码

这是完整的示例代码:

$dsn = 'mysql:host=localhost;dbname=test;charset=utf8mb4';
$user = 'root';
$password = '123456';

try {
    $pdo = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    die('Connection failed: ' . $e->getMessage());
}

$file = 'test.csv';

if (($handle = fopen($file, 'r')) !== false) {
    $sql = 'INSERT INTO `user` (`username`, `password`, `email`, `created_at`) VALUES (:username, :password, :email, NOW())';
    $stmt = $pdo->prepare($sql);
    $stmt->bindParam(':username', $username);
    $stmt->bindParam(':password', $password);
    $stmt->bindParam(':email', $email);

    $count = 0;

    while (($data = fgetcsv($handle)) !== false) {
        list($username, $password, $email) = $data;

        if ($stmt->execute()) {
            $count++;
        }
    }

    fclose($handle);

    echo 'Total inserted: ' . $count;
} else {
    die('Cannot open file');
}

3。总结

本文介绍如何使用PHP批量向MySQL数据库插入数据。我们使用PDO扩展连接MySQL数据库并将数据逐行加载到CSV文件中,然后通过PDO准备好的命令实现批量嵌入。读完本文,相信您已经掌握了如何高效地向MySQL数据库中批量插入数据。

版权声明

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

热门