異構資料庫同步常見需求:MySQL → Access。本文提供完整 PHP 腳本,透過 ODBC 驅動將 MySQL 表資料逐筆寫入 Access。
sqltable(id, name, sex, email)Accesstable(同結構)DSN,帳密 USERNAME/PASSWORD<?php
// 1. 連接 MySQL
$mysql = mysql_connect('localhost', 'user', 'pass');
mysql_select_db('mydatabase', $mysql);
// 2. 查詢來源資料
$sql = 'SELECT * FROM sqltable';
$res = mysql_query($sql, $mysql);
// 3. 連接 Access (ODBC)
$odbc = odbc_connect('DSN', 'USERNAME', 'PASSWORD');
// 4. 逐筆寫入
while ($row = mysql_fetch_assoc($res)) {
// 注意:Access 欄位若為保留字需加 []
$sql = "INSERT INTO Accesstable (id, name, sex, email) VALUES (" .
"'" . $row['id'] . "', " .
"'" . addslashes($row['name']) . "', " .
"'" . addslashes($row['sex']) . "', " .
"'" . addslashes($row['email']) . "')";
odbc_exec($odbc, $sql);
}
// 5. 關閉連線
odbc_close($odbc);
mysql_close($mysql);
?>
mysql_fetch_assoc 取關聯陣列,避免數字索引易錯。addslashes 基本防單引號注入,正式環境建議用 PDO + 參數綁定。INSERT INTO ... (col1, col2...),防結構變更錯位。try-catch、記錄失敗行、事務控制。LOAD DATA 或 INSERT ... VALUES (...),(...),... 批次寫入。PHP 7+ 已移除 mysql_*,請改用 PDO_ODBC 或 mysqli + odbc 擴展:
$pdoMy = new PDO('mysql:host=localhost;dbname=mydatabase', 'user', 'pass');
$pdoAc = new PDO('odbc:DSN', 'USERNAME', 'PASSWORD');
$stmt = $pdoMy->query('SELECT * FROM sqltable');
$ins = $pdoAc->prepare('INSERT INTO Accesstable (id,name,sex,email) VALUES (?,?,?,?)');
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$ins->execute([$row['id'], $row['name'], $row['sex'], $row['email']]);
}