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

PHP 匯入 SQL 腳本至 MySQL 完整實作範例

     編輯:PHP 相關知識

在開發安裝程式、資料備份還原或自動化部署流程時,常需將 .sql 腳本檔案匯入 MySQL 資料庫。本文提供一個健壯、可直接使用的 PHP 範例,支援多行敘述、註解過濾與錯誤處理。

核心程式碼

<?php
// 資料庫連線設定
$filename = 'churc.sql';
$mysql_host = 'localhost';
$mysql_username = 'root';
$mysql_password = '';
$mysql_database = 'dump';

// 建立連線(建議改用 mysqli 或 PDO)
$conn = mysql_connect($mysql_host, $mysql_username, $mysql_password)
    or die('資料庫連線失敗: ' . mysql_error());
mysql_select_db($mysql_database)
    or die('選擇資料庫失敗: ' . mysql_error());

// 讀取整個 SQL 檔案
$lines = file($filename);
$templine = '';

foreach ($lines as $line) {
    // 跳過註解行與空行
    if (substr($line, 0, 2) == '--' || $line == '') continue;

    $templine .= $line;

    // 以分號判斷敘述結束
    if (substr(trim($line), -1, 1) == ';') {
        mysql_query($templine)
            or print('執行查詢錯誤: ' . $templine . ': ' . mysql_error() . '

'); $templine = ''; } } echo "資料表匯入成功"; ?>

關鍵點解析

  • 逐行讀取:使用 file() 將檔案讀入陣列,逐行處理,避免大檔案佔用過多記憶體。
  • 註解過濾:忽略以 -- 開頭的單行註解與空行。
  • 多行敘述支援:透過 $templine 累積直到遇到分號 ;,再一次送出查詢,正確處理跨行的 CREATE TABLE、INSERT 等複雜敘述。
  • 錯誤回報:失敗時輸出完整 SQL 與錯誤訊息,利於除錯。

現代化改良建議

原範例使用已棄用的 mysql_* 函式,實際專案建議改用 PDO 或 mysqli:

  • 使用 PDO::exec() 或 mysqli::multi_query() 可簡化流程。
  • 搭配預處理語句提升安全性。
  • 加入交易控制(BEGIN/COMMIT/ROLLBACK)確保資料一致性。

適用場景

  • CMS/框架安裝精靈的資料庫初始化
  • 自動化部署腳本(CI/CD)中的資料庫遷移
  • 備份還原工具的匯入功能
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved