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

PHP 查詢 MySQL 資料庫完整範例:從連線到釋放資源

     編輯:PHP 相關知識

雖然 mysql_* 函數已棄用(PHP 7.0 移除),但理解完整流程有助於掌握資料庫操作核心概念。現代專案請改用 PDO 或 MySQLi。

傳統 mysql_* 完整流程(僅供參考)

<?php
// 1. 建立連線
$link = mysql_connect('localhost', 'root', 'your_password')
    or die('連線失敗: ' . mysql_error());

// 2. 選擇資料庫
mysql_select_db('your_database', $link)
    or die('選擇資料庫失敗: ' . mysql_error());

// 3. 執行查詢
$query = 'SELECT * FROM products';
$result = mysql_query($query, $link)
    or die('查詢失敗: ' . mysql_error());

// 4. 處理結果
echo '<table border="1">';
echo '<tr><th>ID</th><th>名稱</th><th>價格</th></tr>';

while ($row = mysql_fetch_assoc($result)) {
    echo '<tr>';
    foreach ($row as $value) {
        echo '<td>' . htmlspecialchars($value) . '</td>';
    }
    echo '</tr>';
}
echo '</table>';

// 5. 釋放資源
mysql_free_result($result);

// 6. 關閉連線
mysql_close($link);
?>

現代寫法:PDO(推薦)

<?php
try {
    $pdo = new PDO(
        'mysql:host=localhost;dbname=your_db;charset=utf8mb4',
        'username',
        'password',
        [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
            PDO::ATTR_EMULATE_PREPARES => false,
        ]
    );

    $stmt = $pdo->query('SELECT id, name, price FROM products');
    
    echo '<table border="1"><tr><th>ID</th><th>名稱</th><th>價格</th></tr>';
    foreach ($stmt as $row) {
        echo '<tr><td>' . $row['id'] . '</td>';
        echo '<td>' . htmlspecialchars($row['name']) . '</td>';
        echo '<td>' . $row['price'] . '</td></tr>';
    }
    echo '</table>';

} catch (PDOException $e) {
    error_log('資料庫錯誤: ' . $e->getMessage());
    echo '系統暫時無法服務,請稍後再試。';
}
?>

關鍵差異與優勢

特性mysql_*PDO
SQL 注入防護手動 escape預處理語句
資料庫支援僅 MySQL12+ 種資料庫
錯誤處理die/orException
物件導向否是
PHP 7+ 支援已移除完全支援

最佳實務提醒

  • 永遠使用 htmlspecialchars() 輸出資料防 XSS
  • 生產環境勿直接顯示 SQL 錯誤訊息
  • 使用預處理語句(prepare() + execute())處理動態查詢
  • 連線資訊存放於環境變數或設定檔,勿硬編碼
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved