代码说明:
同样,先建立与 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."; ?>
发表评论