如何用PHP实现数据的备份与恢复

avatar
作者
猴君
阅读量:0

在 PHP 中,可以使用 MySQLi 或 PDO 扩展来实现数据库的备份和恢复。下面是一个简单的示例,展示了如何使用 PHP 和 MySQLi 实现这些功能:

  1. 数据库备份
<?php // 配置数据库信息 $db_host = 'localhost'; $db_user = 'username'; $db_pass = 'password'; $db_name = 'database_name';  // 创建连接 $conn = new mysqli($db_host, $db_user, $db_pass, $db_name);  // 检查连接 if ($conn->connect_error) {     die("连接失败: " . $conn->connect_error); }  // 设置字符集 $conn->set_charset('utf8');  // 获取所有表名 $tables = array(); $result = $conn->query("SHOW TABLES"); while ($row = $result->fetch_array()) {     $tables[] = $row[0]; }  // 开始备份 $backup_file = 'backup_' . date('YmdHis') . '.sql'; $handle = fopen($backup_file, 'w+');  foreach ($tables as $table) {     // 获取表结构     $result = $conn->query("SHOW CREATE TABLE `$table`");     $row = $result->fetch_assoc();     $create_table_sql = $row['Create Table'] . ";\n";     fwrite($handle, $create_table_sql);      // 获取表数据     $result = $conn->query("SELECT * FROM `$table`");     while ($row = $result->fetch_assoc()) {         $values = '';         foreach ($row as $value) {             $values .= "'" . addslashes($value) . "', ";         }         $values = substr($values, 0, -2);         $insert_sql = "INSERT INTO `$table` VALUES ($values);\n";         fwrite($handle, $insert_sql);     } }  fclose($handle); echo "数据库备份成功,文件名:$backup_file"; ?> 
  1. 数据库恢复
<?php // 配置数据库信息 $db_host = 'localhost'; $db_user = 'username'; $db_pass = 'password'; $db_name = 'database_name';  // 创建连接 $conn = new mysqli($db_host, $db_user, $db_pass, $db_name);  // 检查连接 if ($conn->connect_error) {     die("连接失败: " . $conn->connect_error); }  // 设置字符集 $conn->set_charset('utf8');  // 读取备份文件 $backup_file = 'backup_20211001000000.sql'; // 请将此处替换为实际的备份文件名 $content = file_get_contents($backup_file); $sql_list = explode(';', $content);  // 开始恢复 foreach ($sql_list as $sql) {     $sql = trim($sql);     if (!empty($sql)) {         $conn->query($sql);     } }  echo "数据库恢复成功"; ?> 

注意:请确保备份文件和恢复脚本位于服务器上的相同目录中,并根据实际情况修改文件名和数据库信息。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!