首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

使用 PHP 與 XML 實現 MySQL 數據庫備份方案

     編輯:PHP 相關知識

方案概述

本文介紹一套基於 PHP + XML 的 MySQL 數據庫備份方案,包含兩個核心文件:Listtable.php(列表選擇備份表)與 Backup.php(執行備份並生成 XML 文件)。適用於 Linux + Apache + PHP + MySQL 環境。

文件一:Listtable.php — 列出所有數據表供選擇

<?php
$con = mysql_connect('localhost', 'root', 'xswlily');
$lists = mysql_list_tables("embed", $con);

$i = 0;
while ($i < mysql_num_rows($lists)) {
    $tb_name = mysql_tablename($lists, $i);
    echo "<input type='checkbox' name='table[]' value='$tb_name'> $tb_name <br>";
    $i++;
}
?>

此腳本連接數據庫 embed,遍歷所有表名並生成複選框,供用戶勾選欲備份的表。

文件二:Backup.php — 生成 XML 備份文件

<?php
if (empty($_POST['table'])) header("Location: listtable.php");

$con = mysql_connect('localhost', 'root', 'xswlily');
$table = $_POST['table'][0]; // 簡化處理單表,實際可循環多表

$query = "SELECT * FROM `$table`";
$result = mysql_db_query("embed", $query, $con);

// 構建 XML 頭部
$filestr = '<?xml version="1.0" encoding="GB2312"?>';
$filestr .= "<$table>s>";

while ($row = mysql_fetch_array($result)) {
    $filestr .= "<$table>";
    $fields = mysql_list_fields("embed", $table, $con);
    $j = 0;
    while ($j < mysql_num_fields($fields)) {
        $num_fields = mysql_field_name($fields, $j);
        $filestr .= "<$num_fields>" . $row[$j] . "</$num_fields>";
        $j++;
    }
    $filestr .= "</$table>";
}
$filestr .= "</$table>s>";

// 輸出並保存文件
echo $filestr;
$filename = $table . ".xml";
$fp = fopen($filename, "w");
fwrite($fp, $filestr);
fclose($fp);
echo "數據表 $table 已經備份成功!";
?>

關鍵點說明

  • XML 結構:根節點為 <表名s>,每行記錄為 <表名>,字段名作為子節點。
  • 編碼處理:XML 聲明指定 GB2312,需確保數據庫連接與表字符集一致,避免亂碼。
  • 擴展性:可通過循環 $_POST['table'] 實現多表同時備份;恢復邏輯只需解析 XML 寫入數據庫。

安全性提醒

代碼中使用了已棄用的 mysql_* 函數,現代項目建議改用 mysqli 或 PDO,並採用預處理語句防範 SQL 注入。生產環境請務必添加權限驗證、錯誤處理與日誌記錄。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved