首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 與 mysqli 深度對比:連線模式、效能特性與 PHP 開發選型指南

     編輯:MySQL 資料庫相關知識

PHP 連接 MySQL 有三種主流介面:mysql (已移除)、mysqli、PDO_MySQL。本文深度對比 mysql 與 mysqli 連線模式、API 風格、效能特性,並給出現代選型建議。

核心差異:連線模式

特性mysql (舊)mysqli
連線類型非持久 (短連線)持久連線 (長連線)
進程模型每次請求新建進程復用同一進程
服務器壓力高 (頻繁建連)低 (連線復用)
PHP 版本5.0-5.6, 7.0 移除5.0+ 至今維護

mysqli 兩種 API 風格

1. 程序式 (類 mysql 風格)

$conn = mysqli_connect('localhost', 'root', '123', 'db_test') 
    or die('Connect Error: ' . mysqli_connect_error());

$sql = "SELECT * FROM db_table";
$result = mysqli_query($conn, $sql);

while ($row = mysqli_fetch_assoc($result)) {
    echo $row['title'];
}
mysqli_free_result($result);
mysqli_close($conn);

2. 物件導向 (推薦)

$conn = new mysqli('localhost', 'root', '123', 'db_test');
if ($conn->connect_error) die('Connect Error: ' . $conn->connect_error);

$sql = "SELECT * FROM db_table";
$result = $conn->query($sql);

while ($row = $result->fetch_assoc()) {
    echo $row['title'];
}
$result->free();
$conn->close();

mysql 連線變體對比

函數連線類型特點
mysql_connect()短連線每請求建連,腳本結束自動釋放
mysql_pconnect()長連線進程級連線池,mysql_close() 無效
mysqli_connect()長連線 (預設)物件/程序雙模式,現代標準

長連線 (pconnect) 優缺點分析

優點缺點
省去 TCP 三次握手 + 認證開銷佔用連線槽位,高併發易達 max_connections
減少進程建立/銷毀開銷若查詢鎖死,連線永久佔用,影響整個進程池
適合高頻、輕量查詢CGI 模式下無效 (每請求銷毀進程)

Apache 模組 vs CGI 模式影響

  • Apache mod_php:進程常駐,長連線生效,但需監控連線洩漏
  • PHP-FPM (FastCGI):Worker 進程復用,長連線同樣生效,連線池由 FPM 管理
  • CGI:每請求啟動新進程,長連線無意義

現代選型建議

  1. 新專案首選 PDO_MySQL:資料庫抽象層、支援多種資料庫、預處理語句、異常處理優雅
  2. 僅用 MySQL 且偏好 OOP:mysqli 物件導向 API
  3. 維護舊專案:逐步遷移至 mysqli 程序式 API (語法相近)
  4. 絕對避免:mysql_* 函數 (PHP 7+ 已移除、無預處理、SQL 注入高風險)

關鍵進階特性 (mysqli/PDO 獨有)

  • 預處理語句:prepare() / bind_param() / execute() — 防 SQL 注入、提升重複查詢效能
  • 多查詢:multi_query() 批次執行
  • 交易控制:begin_transaction() / commit() / rollback()
  • 非同步查詢:mysqli::query(..., MYSQLI_ASYNC)
  • SSL/壓縮連線:mysqli::ssl_set()、mysqli::options(MYSQLI_OPT_COMPRESS)

技術債務清理應列入規劃:將所有 mysql_* 遷移至 mysqli 或 PDO,並全面採用預處理語句,是 PHP 專案安全與可維護性的基石。

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