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

PHP MySQL 連線查詢完整流程與資源管理教學

     編輯:PHP 相關知識

前言

PHP 操作 MySQL 的標準流程包含:連線、選擇資料庫、執行查詢、處理結果、釋放資源、關閉連線。本文詳細說明各步驟的最佳實踐與常見錯誤。

完整流程實作 (PDO 現代寫法)

<?php
// 設定參數
$host = 'localhost';
$user = 'root';
$pass = 'admin';
$dbname = 'test';

try {
    // 1. 建立連線 (自動設定字元集與錯誤模式)
    $pdo = new PDO(
        "mysql:host=$host;dbname=$dbname;charset=utf8mb4",
        $user,
        $pass,
        [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
            PDO::ATTR_EMULATE_PREPARES => false,
        ]
    );
    echo "資料庫連線成功!繼續操作...<br>";

    // 2. 執行查詢
    $sql = "SELECT id, name, city FROM users";
    $stmt = $pdo->query($sql);

    // 3. 處理結果
    $rows = $stmt->fetchAll();
    $count = count($rows);

    echo "SQL 語句:$sql <br>已成功執行!<br>";
    echo "查詢到 <b>$count</b> 筆資料<br><br>";

    // 顯示資料
    foreach ($rows as $row) {
        echo "ID: {$row['id']}, 姓名: {$row['name']}, 城市: {$row['city']}<br>";
    }

    // 4. 關閉連線 (PDO 物件銷毀時自動關閉,也可手動)
    $pdo = null;
    echo "<br>資料庫連線已成功關閉";

} catch (PDOException $e) {
    die("操作失敗:" . $e->getMessage());
}
?>

傳統 mysql_* 函式寫法 (已淘汰,僅供維舊專案參考)

⚠ 警告:mysql_* 函式自 PHP 5.5 棄用,PHP 7.0 移除。
新專案請務必使用 PDO 或 mysqli。
<?php
$host = 'localhost';
$user = 'root';
$pass = 'admin';
$dbname = 'test';

// 1. 連線
$conn = @mysql_connect($host, $user, $pass);
if (!$conn) {
    die('連線失敗:' . mysql_error());
}
echo '連線成功!<br>';

// 2. 選擇資料庫
if (!@mysql_select_db($dbname, $conn)) {
    die('選擇資料庫失敗:' . mysql_error());
}

// 3. 設定字元集 (重要!)
mysql_query("SET NAMES 'utf8'");

// 4. 執行查詢
$sql = "SELECT id, name, city FROM users";
$result = mysql_query($sql, $conn);
if (!$result) {
    die('查詢失敗:' . mysql_error());
}

// 5. 取得筆數
$num = mysql_num_rows($result);
echo "查詢到 <b>$num</b> 筆資料<br>";

// 6. 處理結果
while ($row = mysql_fetch_assoc($result)) {
    print_r($row);
}

// 7. 釋放結果集記憶體
mysql_free_result($result);

// 8. 關閉連線
if (mysql_close($conn)) {
    echo "<br>連線已關閉";
}
?>

資源管理關鍵點比較

項目mysql_* (舊)PDO (新)mysqli (新)
連線物件資源 handlePDO 物件mysqli 物件
錯誤處理手動檢查每步回傳值例外模式 (推薦)例外模式或錯誤碼
字元集設定手動 SET NAMESDSN 指定 charsetset_charset()
預備語句不支援完整支援完整支援
多資料庫支援僅 MySQL12+ 種驅動僅 MySQL
結果集釋放需手動 mysql_free_result()自動 (變數超出範圍)需手動 free_result()
連線關閉需手動 mysql_close()自動 (物件銷毀)需手動 close()

效能最佳化建議

  1. 只選取需要的欄位:避免 SELECT *,減少網路傳輸與記憶體使用
  2. 善用索引:WHERE、JOIN、ORDER BY 欄位應建立索引
  3. 大量資料分批處理:使用 LIMIT 分頁或游標避免記憶體耗盡
  4. 持久連線:高頻存取場景可啟用持久連線減少握手開銷
  5. 查詢快取:重複查詢結果可用 Redis/Memcached 快取

總結

現代 PHP 開發應全面採用 PDO,享受統一介面、預備語句安全性、例外錯誤處理等優勢。理解完整的連線查詢流程與資源管理,是撰寫高效、穩定資料庫應用的基礎。

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