代码说明:
同样,先建立与 MySQL 数据库的连接。
然后,读取备份文件中的 SQL 语句。
接着,将 SQL 语句按分号分割成多个语句。
最后,依次执行这些语句,完成数据表的还原。

注意事项
请将 your_username、your_password、your_database 和 your_table 替换为实际的数据库用户名、密码、数据库名和表名。
在执行还原操作时,确保备份文件的路径正确。
为了安全起见,建议在执行备份和还原操作时进行适当的权限检查和错误处理。
1. 备份数据表
备份数据表的基本思路是查询表中的所有数据,并将数据以 SQL 语句的形式保存到一个文件中。以下是实现备份的示例代码:
<?php
// 数据库连接配置
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";
// 创建数据库连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接是否成功
if ($conn->connect_error) {
die("Connection failed: ". $conn->connect_error);
}
// 要备份的表名
$table_name = "your_table";
// 查询表结构
$sql = "SHOW CREATE TABLE $table_name";
$result = $conn->query($sql);
$row = $result->fetch_row();
$create_table = $row[1];
// 生成备份文件内容
$backup = "-- MySQL Database Backup\n";
$backup.= "-- Database: $dbname\n";
$backup.= "-- Table: $table_name\n";
$backup.= "-- Generated: ". date('Y-m-d H:i:s'). "\n\n";
$backup.= "$create_table;\n\n";
// 查询表中的数据
$sql = "SELECT * FROM $table_name";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
$columns = implode(', ', array_keys($row));
$values = "'". implode("', '", array_map(array($conn, 'real_escape_string'), $row)). "'";
$insert = "INSERT INTO $table_name ($columns) VALUES ($values);\n";
$backup.= $insert;
}
}
// 保存备份文件
$backup_file = $table_name. '_backup_'. date('YmdHis'). '.sql';
file_put_contents($backup_file, $backup);
// 关闭数据库连接
$conn->close();
echo "Backup created successfully: ". $backup_file;
?>2. 还原数据表
还原数据表的过程是读取备份文件中的 SQL 语句,并执行这些语句。以下是实现还原的示例代码:
<?php
// 数据库连接配置
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";
// 创建数据库连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接是否成功
if ($conn->connect_error) {
die("Connection failed: ". $conn->connect_error);
}
// 备份文件路径
$backup_file = "your_table_backup_20250313123456.sql";
// 读取备份文件内容
$sql = file_get_contents($backup_file);
// 分割 SQL 语句
$statements = explode(';', $sql);
// 执行 SQL 语句
foreach ($statements as $statement) {
if (trim($statement) != '') {
if (!$conn->query($statement)) {
echo "Error: ". $conn->error;
}
}
}
// 关闭数据库连接
$conn->close();
echo "Restore completed successfully.";
?>



发表评论