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

在许多场景下,我们需要将大量数据同时插入到MySQL数据库中,这时候单独插入每一条数据会非常耗时。因此,使用批量插入可以显著地提高数据插入的效率。本文将介绍如何使用PHP实现批量插入数据到MySQL数据库。

一、准备工作

在开始代码编写之前,我们需要进行几个准备工作:

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三个字段:

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

二、逐行读取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方法绑定变量并循环执行execute方法实现批量插入:

$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');
}

三、总结

本文介绍了如何使用PHP实现批量插入数据到MySQL数据库。我们使用了PDO扩展连接到MySQL数据库,并逐行读取CSV文件中的数据,然后通过PDO的预处理语句实现批量插入。通过本文的学习,相信您已经掌握了如何高效地批量插入数据到MySQL数据库。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/157688.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-18 20:01
下一篇 2024-11-18 20:01

相关推荐

  • Python读取CSV数据画散点图

    本文将从以下方面详细阐述Python读取CSV文件并画出散点图的方法: 一、CSV文件介绍 CSV(Comma-Separated Values)即逗号分隔值,是一种存储表格数据的…

    编程 2025-04-29
  • Python中读入csv文件数据的方法用法介绍

    csv是一种常见的数据格式,通常用于存储小型数据集。Python作为一种广泛流行的编程语言,内置了许多操作csv文件的库。本文将从多个方面详细介绍Python读入csv文件的方法。…

    编程 2025-04-29
  • 如何使用Python获取某一行

    您可能经常会遇到需要处理文本文件数据的情况,在这种情况下,我们需要从文本文件中获取特定一行的数据并对其进行处理。Python提供了许多方法来读取和处理文本文件中的数据,而在本文中,…

    编程 2025-04-29
  • Python 常用数据库有哪些?

    在Python编程中,数据库是不可或缺的一部分。随着互联网应用的不断扩大,处理海量数据已成为一种趋势。Python有许多成熟的数据库管理系统,接下来我们将从多个方面介绍Python…

    编程 2025-04-29
  • 如何用Python统计列表中各数据的方差和标准差

    本文将从多个方面阐述如何使用Python统计列表中各数据的方差和标准差, 并给出详细的代码示例。 一、什么是方差和标准差 方差是衡量数据变异程度的统计指标,它是每个数据值和该数据值…

    编程 2025-04-29
  • openeuler安装数据库方案

    本文将介绍在openeuler操作系统中安装数据库的方案,并提供代码示例。 一、安装MariaDB 下面介绍如何在openeuler中安装MariaDB。 1、更新软件源 sudo…

    编程 2025-04-29
  • 如何使用jumpserver调用远程桌面

    本文将介绍如何使用jumpserver实现远程桌面功能 一、安装jumpserver 首先我们需要安装并配置jumpserver。 $ wget -O /etc/yum.repos…

    编程 2025-04-29
  • Python多线程读取数据

    本文将详细介绍多线程读取数据在Python中的实现方法以及相关知识点。 一、线程和多线程 线程是操作系统调度的最小单位。单线程程序只有一个线程,按照程序从上到下的顺序逐行执行。而多…

    编程 2025-04-29
  • Python爬取公交数据

    本文将从以下几个方面详细阐述python爬取公交数据的方法: 一、准备工作 1、安装相关库 import requests from bs4 import BeautifulSou…

    编程 2025-04-29
  • Python两张表数据匹配

    本篇文章将详细阐述如何使用Python将两张表格中的数据匹配。以下是具体的解决方法。 一、数据匹配的概念 在生活和工作中,我们常常需要对多组数据进行比对和匹配。在数据量较小的情况下…

    编程 2025-04-29

发表回复

登录后才能评论