以下分别是使用 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 数据库中检查是否已成功插入了指定的数据。