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

透過 Access 從 Web 取得 MySQL 資料:ODBC 限制與 ActiveX 網頁控制項替代方案

     編輯:PHP 相關知識

MySQL 是熱門 Web 資料庫,但防火牆常封鎖 3306 埠導致無法直接 ODBC 連線。本文介紹透過 HTTP + ActiveX 控制項繞過埠限制,將 MySQL 資料同步至本地 Access 的方案。

問題背景

  • 客戶端無法直連 MySQL 埠 (安全政策、NAT、防火牆)。
  • 虛擬主機僅提供 phpMyAdmin、CGI、FrontPage 延伸等 Web 介面,無 Shell/遠端桌面權限。
  • 需將資料導入 Access/ERP 等桌面應用進行後續分析。

傳統人工流程 (低效)

  1. 登入主機控制台 → 匯出 SQL/CSV。
  2. 下載檔案 → 本地匯入 Access (ODBC/手動)。
  3. 重複上述步驟進行資料同步。

自動化方案:Access + WebBrowser ActiveX 控制項

架構圖

[MySQL on Host] → [PHP 腳本輸出 HTML 表格/CSV] → [Access Form WebBrowser 控制項導航/擷取] → [Access 本地資料表]

實作步驟

  1. Access 建立本地資料表 Sales_Data,結構與遠端 MySQL 表完全一致。
  2. 表單放置 Microsoft Web Browser 控制項 (ActiveX),名為 WebBrowser1。
  3. 表單載入時導航至登入頁:WebBrowser1.Navigate "https://host.com/phpmyadmin/login.php"。
  4. 使用者登入後,程式偵測文件完成事件 (DocumentComplete),導航至資料匯出頁:WebBrowser1.Navigate "https://host.com/export.php?table=Sales_Data&format=csv"。
  5. 解析回傳 HTML/CSV (DOM 操作或儲存檔案),寫入本地 Sales_Data。
  6. 後續可透過 Access ODBC 連結將資料推送至 ERP/其他系統。

關鍵 VBA 程式碼片段

Private Sub Form_Load()
  Set wb = Me.WebBrowser1.Object
  wb.Silent = True
  wb.Navigate "https://host.com/login.php"
End Sub

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
  If InStr(URL, "export.php") > 0 Then
    ' 解析 HTML 表格或下載 CSV
    Dim doc As HTMLDocument: Set doc = wb.Document
    Dim tbl As HTMLTable: Set doc.getElementsByTagName("table")(0)
    ' 迴圈列/欄寫入本地 Recordset...
    ' 或使用 wb.ExecWB OLECMDID_SAVEAS 儲存 CSV 再匯入
  End If
End Sub

安全性與穩定性考量

  • 憑證驗證:確保 HTTPS、憑證有效,防止中間人攻擊。
  • 登入自動化:若主機支援 API Token,優先用 HTTP 請求 (WinHTTP/MSXML2) 替代 WebBrowser,更穩定輕量。
  • 資料完整性:匯入後驗證筆數、檢查碼、關鍵欄位非空。
  • 錯誤處理:網路中斷、HTML 結構變更、編碼錯誤皆需捕獲並記錄。

現代替代方案 (強烈建議)

方案優勢
MySQL ODBC + SSH Tunnel (Putty/SSH.NET)加密通道、標準 ODBC、支援所有 Access 功能
REST API + JSON (PHP/Laravel/Node.js)結構化、版本控管、易除錯、跨平台
雲端同步服務 (AWS DMS、Azure Data Factory)企業級、排程、監控、增量同步
Python 腳本 (pymysql + pyodbc/pandas)自動化、可排程、邏輯集中、易維護

ActiveX 方案屬於舊技術棧 (IE 引擎、相容性風險),新專案請採用 API + 現代連接器架構。

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