Current Location: Home> Latest Articles> Detailed Guide and Code Example for Batch Inserting Data into MySQL with PHP

Detailed Guide and Code Example for Batch Inserting Data into MySQL with PHP

gitbox 2025-07-26

Overview

In PHP development, it is common to insert large amounts of data into a MySQL database. Inserting data one row at a time is inefficient and increases the number of database connections. Batch inserting data can significantly improve performance. This article explains how to implement batch inserts into MySQL using PHP.

Advantages of Batch Insertion

Compared to inserting records one by one, batch insertion offers the following benefits:

Reduces the number of interactions with the database, improving overall performance.

Simplifies code structure, enhancing development efficiency and maintainability.

Steps to Implement Batch Insertion

Prepare the Data

First, prepare the data to be inserted. The example below shows an array representing user first names, last names, and emails:

$data = array(
    array('John', 'Doe', '[email protected]'),
    array('Jane', 'Smith', '[email protected]'),
    array('Tom', 'Hanks', '[email protected]')
);

In real applications, data might come from form submissions, file imports, or other sources.

Create a Database Connection

Use PHP's mysqli extension to connect to the MySQL database. Example code:

$host = "localhost";
$username = "root";
$password = "password";
$database = "mydatabase";

$conn = new mysqli($host, $username, $password, $database);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

Replace the connection parameters with your actual database credentials.

Construct the Batch Insert SQL Statement

Build a complete INSERT INTO statement by iterating over the data array:

$sql = "INSERT INTO users (first_name, last_name, email) VALUES ";
foreach ($data as $row) {
    $sql .= "('" . $conn->real_escape_string($row[0]) . "', '" 
        . $conn->real_escape_string($row[1]) . "', '" 
        . $conn->real_escape_string($row[2]) . "'),";
}
$sql = rtrim($sql, ",");

The real_escape_string method prevents SQL injection and ensures data security.

Execute the Insert Operation

Use the query method to run the SQL statement and check the result:

if ($conn->query($sql) === true) {
    echo "Data inserted successfully!";
} else {
    echo "Insert failed: " . $conn->error;
}

$conn->close();

Conclusion

Using the steps above, you can efficiently perform batch inserts into MySQL with PHP. This method reduces the number of database interactions and improves performance, making it suitable for quickly storing large volumes of data.

Mastering batch insert techniques can optimize the interaction between PHP applications and databases, enhancing overall system performance.