適用於安裝精靈、資料庫部署腳本,需程式化執行 phpMyAdmin 匯出的 .sql 檔案。
ct_ → 系統設定前綴)CREATE TABLE 與 INSERT 陳述式<?php
$dbFile = 'install.sql';
$tablePrefix = 'myapp_'; // 目標前綴
// 1. 讀取並轉碼(視檔案編碼調整)
$content = file_get_contents($dbFile);
$content = iconv('UTF-8', 'UTF-8', $content); // 確保編碼一致
// 2. 移除註解
$content = preg_replace('/--.*\n/U', '', $content);
$content = preg_replace('/\/\*.*?\*\//s', '', $content); // 區塊註解
// 3. 替換前綴(假設原始前綴為 ct_)
$content = str_replace('ct_', $tablePrefix, $content);
// 4. 分割 SQL 陳述式(簡易版,以分號結尾分割)
$statements = array_filter(array_map('trim', explode(';', $content)));
// 5. 執行
$mysqli = new mysqli('localhost', 'user', 'pass', 'dbname');
if ($mysqli->connect_errno) {
die('DB 連線失敗: ' . $mysqli->connect_error);
}
foreach ($statements as $sql) {
if (empty($sql)) continue;
if (!$mysqli->query($sql)) {
error_log("SQL 執行失敗: $sql\n錯誤: " . $mysqli->error);
// 視需求決定是否中止
}
}
$mysqli->close();
$dbfile = "test.sql";
$content = iconv("UTF-8","GB2312", file_get_contents($dbfile));
$content = preg_replace("/--.*\n/iU","",$content);
$content = str_replace("ct_", TABLE_PRE, $content);
$carr = $iarr = [];
preg_match_all("/Create table .*\(.*\).*\;/iUs", $content, $carr);
foreach ($carr[0] as $c) @mysql_query($c, $link);
preg_match_all("/INSERT INTO .*\(.*\)\;/iUs", $content, $iarr);
foreach ($iarr[0] as $c) @mysql_query($c, $link);
mysqli_multi_query 或 LOAD DATA INFILE。