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

MySQL 資料庫連線最簡範例 (mysql_* 函數)

     編輯:PHP 相關知識

PHP MySQL 連線最基礎範例 (舊版 mysql_* 函數)

本文提供最精簡的 PHP 連接 MySQL 資料庫程式碼,使用已棄用的 mysql_* 函數族群。**僅供維護舊版 PHP (≤5.6) 專案參考,新專案請改用 mysqli 或 PDO。**

最精簡連線程式碼

完整版 (含選擇資料庫、設定編碼、錯誤處理)

";

// 4. 執行測試查詢
$result = mysql_query("SELECT VERSION() as version", $conn);
if ($result) {
    $row = mysql_fetch_assoc($result);
    echo "MySQL 版本: " . $row['version'] . "
"; mysql_free_result($result); } // 5. 關閉連線 mysql_close($conn); echo "連線已關閉";

關鍵函數說明

函數用途備註
mysql_connect()建立連線回傳連線資源或 false
mysql_select_db()選擇預設資料庫成功回傳 true
mysql_query()執行 SQLSELECT 回傳資源,其他回傳 true/false
mysql_fetch_assoc()取得關聯陣列逐行取得,無資料回傳 false
mysql_fetch_array()取得數字+關聯陣列第二參數: MYSQL_ASSOC/MYSQL_NUM/MYSQL_BOTH
mysql_num_rows()取得結果筆數僅適用 SELECT/SHOW/DESC/EXPLAIN
mysql_error()取得最後錯誤訊息需在失敗操作後立即呼叫
mysql_close()關閉連線腳本結束會自動關閉,建議顯式呼叫

常見連線問題排查

Q: Access denied for user 'root'@'localhost'
A: 密碼錯誤、使用者不存在、或 root 禁止遠端登入。檢查 MySQL 使用者權限:GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
Q: Can't connect to MySQL server on 'localhost'
A: MySQL 服務未啟動、port 錯誤 (預設 3306)、防火牆阻擋、或 skip-networking 開啟。Windows: net start mysql,Linux: systemctl start mysqld
Q: 中文資料存入後變 ??? 或 亂碼
A: 必須在連線後立即執行 SET NAMES utf8 (或 utf8mb4),且資料表/欄位 collation 為 utf8_general_ci 或 utf8mb4_unicode_ci,PHP 檔案儲存為 UTF-8 無 BOM。

⚠️ 重要警告:mysql_* 函數已移除

PHP 版本演進:
  • PHP 5.5.0 (2013) - 標記為 Deprecated (棄用),產生 E_DEPRECATED 錯誤
  • PHP 7.0.0 (2015) - 完全移除,呼叫會產生 Fatal Error
所有現代 PHP 專案 (PHP 7+) 都無法使用 mysql_* 函數。

現代替代方案對照

舊寫法 (mysql_*)mysqli (程序式)mysqli (物件導向)PDO (推薦)
mysql_connect()mysqli_connect()new mysqli()new PDO()
mysql_select_db()mysqli_select_db()$mysqli->select_db()DSN 指定 dbname
mysql_query()mysqli_query()$mysqli->query()$pdo->query()/prepare()
mysql_fetch_assoc()mysqli_fetch_assoc()$result->fetch_assoc()$stmt->fetch(PDO::FETCH_ASSOC)
mysql_escape_string()mysqli_real_escape_string()$mysqli->real_escape_string()Prepared Statements (不需跳脫)
mysql_error()mysqli_error()$mysqli->error$pdo->errorInfo() / Exception
mysql_close()mysqli_close()$mysqli->close()$pdo = null

PDO 版最簡連線 (新專案標準寫法)

 PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_EMULATE_PREPARES => false,
    ]);
    echo "PDO 連線成功!";
} catch (PDOException $e) {
    die("連線失敗: " . $e->getMessage());
}

遷移檢查清單 (mysql_* → PDO)

  1. 將所有 mysql_connect() 改為 new PDO()
  2. 移除 mysql_select_db() (DSN 中指定)
  3. 將 mysql_query($sql) 改為 $pdo->query($sql) (查詢) 或 $pdo->exec($sql) (增刪改)
  4. 將參數化查詢改用 $pdo->prepare() + $stmt->execute([...])
  5. 移除所有 mysql_real_escape_string() (Prepared Statements 自動處理)
  6. 將 mysql_fetch_assoc() 改為 $stmt->fetch(PDO::FETCH_ASSOC)
  7. 將 mysql_error() 改為 try-catch 捕捉 PDOException
  8. 移除 mysql_close() (設為 null 或讓 GC 回收)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved