在 PHP 中,可以使用 MySQLi 或 PDO 扩展来实现数据库的备份和恢复。下面是一个简单的示例,展示了如何使用 PHP 和 MySQLi 实现这些功能:
<?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";
?>
<?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 "数据库恢复成功";
?>
注意:请确保备份文件和恢复脚本位于服务器上的相同目录中,并根据实际情况修改文件名和数据库信息。