以下分别是使用 MySQLi 和 PDO 向 MySQL 插入多条数据的示例代码:

使用 MySQLi 插入多条数据:

<?php
// MySQL 数据库连接参数
$servername = "localhost"; // MySQL 服务器地址
$username = "your_username"; // MySQL 用户名
$password = "your_password"; // MySQL 密码
$dbname = "your_database"; // 要连接的数据库名

// 要插入的数据
$data = array(
    array("John", "Doe", "john@example.com"),
    array("Jane", "Smith", "jane@example.com"),
    array("David", "Brown", "david@example.com")
);

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检查连接是否成功
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// 准备 SQL 语句
$sql = "INSERT INTO users (firstname, lastname, email) VALUES ";
$values = array();
foreach ($data as $row) {
    $values[] = "('" . implode("', '", $row) . "')";
}
$sql .= implode(", ", $values);

// 执行 SQL 语句
if ($conn->query($sql) === TRUE) {
    echo "New records created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

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

使用 PDO 插入多条数据:

<?php
// MySQL 数据库连接参数
$servername = "localhost"; // MySQL 服务器地址
$username = "your_username"; // MySQL 用户名
$password = "your_password"; // MySQL 密码
$dbname = "your_database"; // 要连接的数据库名

// 要插入的数据
$data = array(
    array("John", "Doe", "john@example.com"),
    array("Jane", "Smith", "jane@example.com"),
    array("David", "Brown", "david@example.com")
);

try {
    // 创建 PDO 实例
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);

    // 设置 PDO 错误模式为异常
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 开始事务
    $conn->beginTransaction();

    // 构建 SQL 语句
    $sql = "INSERT INTO users (firstname, lastname, email) VALUES (:firstname, :lastname, :email)";
    $stmt = $conn->prepare($sql);

    // 循环插入数据
    foreach ($data as $row) {
        $stmt->bindParam(':firstname', $row[0]);
        $stmt->bindParam(':lastname', $row[1]);
        $stmt->bindParam(':email', $row[2]);
        $stmt->execute();
    }

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

    echo "New records created successfully";
} catch(PDOException $e) {
    // 回滚事务
    $conn->rollback();
    echo "Error: " . $e->getMessage();
}

// 关闭连接
$conn = null;
?>

在这两个示例中,$data 变量包含要插入的多条数据。然后,使用循环构建 SQL 语句或使用预处理语句来插入多条数据。 MySQLi 示例直接构建 SQL 语句,而 PDO 示例使用预处理语句和事务来插入数据。执行以上代码后,如果一切顺利,会输出 “New records created successfully”。你可以在 MySQL 数据库中检查是否已成功插入了指定的数据。

使用预处理语句

当使用预处理语句时,你可以更安全地执行 SQL 查询,防止 SQL 注入攻击,并且可以更高效地执行相同的查询多次。以下是使用 MySQLi 和 PDO 预处理语句向 MySQL 插入多条数据的示例代码:

使用 MySQLi 预处理语句插入多条数据:

<?php
// MySQL 数据库连接参数
$servername = "localhost"; // MySQL 服务器地址
$username = "your_username"; // MySQL 用户名
$password = "your_password"; // MySQL 密码
$dbname = "your_database"; // 要连接的数据库名

// 要插入的数据
$data = array(
    array("John", "Doe", "john@example.com"),
    array("Jane", "Smith", "jane@example.com"),
    array("David", "Brown", "david@example.com")
);

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);

// 检查连接是否成功
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// 准备预处理语句
$sql = "INSERT INTO users (firstname, lastname, email) VALUES (?, ?, ?)";
$stmt = $conn->prepare($sql);

// 绑定参数并执行多次
foreach ($data as $row) {
    $stmt->bind_param("sss", $row[0], $row[1], $row[2]);
    $stmt->execute();
}

echo "New records created successfully";

// 关闭连接
$stmt->close();
$conn->close();
?>

使用 PDO 预处理语句插入多条数据:

<?php
// MySQL 数据库连接参数
$servername = "localhost"; // MySQL 服务器地址
$username = "your_username"; // MySQL 用户名
$password = "your_password"; // MySQL 密码
$dbname = "your_database"; // 要连接的数据库名

// 要插入的数据
$data = array(
    array("John", "Doe", "john@example.com"),
    array("Jane", "Smith", "jane@example.com"),
    array("David", "Brown", "david@example.com")
);

try {
    // 创建 PDO 实例
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);

    // 设置 PDO 错误模式为异常
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // 准备预处理语句
    $stmt = $conn->prepare("INSERT INTO users (firstname, lastname, email) VALUES (?, ?, ?)");

    // 开始事务
    $conn->beginTransaction();

    // 绑定参数并执行多次
    foreach ($data as $row) {
        $stmt->execute($row);
    }

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

    echo "New records created successfully";
} catch(PDOException $e) {
    // 回滚事务
    $conn->rollback();
    echo "Error: " . $e->getMessage();
}

// 关闭连接
$conn = null;
?>

在这两个示例中,我们首先准备了预处理语句,然后绑定参数并使用循环执行多次。 MySQLi 示例使用 bind_param() 方法绑定参数,而 PDO 示例直接在 execute() 方法中传递参数数组。执行以上代码后,如果一切顺利,会输出 “New records created successfully”。你可以在 MySQL 数据库中检查是否已成功插入了指定的数据。

Leave a Reply

Your email address will not be published. Required fields are marked *