萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

PHP 搭配 MySQL 輸出 XML 完整實作教學

環境準備

  1. 下載 PHP 安裝檔與 ZIP 檔(需 ZIP 內的擴充套件)。
  2. 執行安裝檔安裝 PHP。
  3. 將 iconv.dll 解壓至 Windows 系統資料夾(如 C:\Windows\System32)。
  4. 在 PHP 安裝目錄(預設 C:\PHP)建立 extensions 資料夾。
  5. 將 php_domxml.dll 解壓至 extensions。
  6. 編輯 php.ini:
    • 設定 extension_dir = "C:\PHP\extensions"
    • 啟用 extension=php_domxml.dll(移除前方分號)
  7. 重新啟動 Web 伺服器(IIS / Apache)。

實作程式碼:MySQL 查詢結果轉 XML

在 Web 目錄建立 test.php:

<?php
require_once('mysql_xml_class.php'); // 假設將類別另存為此檔

$xml = new CMySQLXML('localhost', 'root', 'password', 'database_name');
echo $xml->run_sql_return_xml('SELECT * FROM users');
?>

類別檔 mysql_xml_class.php:

<?php
class CMySQLXML {
    private $host, $user, $password, $db;

    public function __construct($host, $user, $password, $db) {
        $this->host = $host;
        $this->user = $user;
        $this->password = $password;
        $this->db = $db;
    }

    public function run_sql_return_xml($sql_string) {
        $conn = mysqli_connect($this->host, $this->user, $this->password, $this->db);
        if (!$conn) die('連線失敗: ' . mysqli_connect_error());

        $result = mysqli_query($conn, $sql_string);
        if (!$result) die('查詢錯誤: ' . mysqli_error($conn));

        $dom = new DOMDocument('1.0', 'UTF-8');
        $root = $dom->createElement('resultset');
        $dom->appendChild($root);

        while ($row = mysqli_fetch_assoc($result)) {
            $rowElem = $dom->createElement('row');
            $root->appendChild($rowElem);

            foreach ($row as $fieldName => $value) {
                $colElem = $dom->createElement($fieldName);
                $rowElem->appendChild($colElem);
                $text = $dom->createTextNode($value);
                $colElem->appendChild($text);
            }
        }

        mysqli_free_result($result);
        mysqli_close($conn);
        return $dom->saveXML();
    }
}
?>

注意事項

  • 原文使用已棄用的 mysql_* 函數與 domxml 擴充,現代環境請改用 mysqli 或 PDO 搭配 DOMDocument。
  • 輸出前建議送出 header('Content-Type: application/xml; charset=utf-8');。
  • 生產環境務必加入錯誤處理、參數化查詢防 SQL 注入。
copyright © 萬盛學電腦網 all rights reserved