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

PHP 實現 MySQL 資料表 XML 備份與還原

     編輯:PHP 綜合知識

架構設計

  • Listtable.php:列出指定資料庫所有表供選擇
  • Backup.php:讀取單表全量資料 → 組裝 XML → 寫入檔案

核心代碼

Listtable.php

<?php
$conn = mysql_connect('localhost', 'root', 'pass');
mysql_select_db('embed', $conn);
$tables = mysql_list_tables('embed', $conn);
for ($i = 0; $i < mysql_num_rows($tables); $i++) {
    $name = mysql_tablename($tables, $i);
    echo "<a href='Backup.php?table=$name'>$name</a><br>";
}
?>

Backup.php

<?php
if (empty($_GET['table'])) header('Location: Listtable.php');
$table = $_GET['table'];

$conn = mysql_connect('localhost', 'root', 'pass');
mysql_select_db('embed', $conn);

$res = mysql_query("SELECT * FROM `$table`", $conn);
$fields = [];
$num = mysql_num_fields($res);
for ($i = 0; $i < $num; $i++) $fields[] = mysql_field_name($res, $i);

$xml = '';
$xml .= "<{$table}s>";
while ($row = mysql_fetch_assoc($res)) {
    $xml .= "<$table>";
    foreach ($fields as $f) {
        $xml .= "<$f>" . htmlspecialchars($row[$f]) . "";
    }
    $xml .= "";
}
$xml .= "";

$file = $table . '.xml';
file_put_contents($file, $xml);
echo "資料表 $table 備份成功!";
?>

關鍵細節

  1. 欄位名做標籤:<欄位名>值</欄位名>,還原時可直接對應
  2. 特殊字元處理:htmlspecialchars() 防止 < > & 破壞 XML 結構
  3. 編碼宣告:encoding="GB2312" 或 UTF-8,需與資料庫實際編碼一致
  4. 大表分批:生產環境建議 LIMIT offset, 1000 分批寫入,避免記憶體溢位

還原策略 (略)

解析 XML → SimpleXML 或 XMLReader 逐行讀取 → 組裝 INSERT 或 REPLACE → 事務執行。大檔案請用 XMLReader 流式解析。

現代替代方案

  • mysqldump --xml -u root -p db table > table.xml (官方工具,效能最強)
  • Percona XtraBackup (物理熱備份)
  • 定時任務 + 雲端儲存 (S3/OSS) 自動化備份流程

本文方案適合「需自定義 XML 結構、嵌入式環境無法安裝客戶端工具」的特殊場景。

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