萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 與 mysqli 的差異與使用指南

MySQL 與 mysqli 擴展的核心差異

在 PHP 開發中,資料庫連接方式的選擇直接影響應用程式的效能與安全性。早期的 mysql 擴展採用非持久連接模式,每次執行查詢都會建立新的連接進程,頻繁的連線建立與關閉會帶來顯著的伺服器開銷。而 mysqli(MySQL Improved)引入了持久連接機制,同一腳本執行期間多次呼叫將復用同一連接進程,大幅降低資源消耗。

主要差異對照表

特性mysql 擴展mysqli 擴展
連接模式非持久連接支援持久連接
物件導向介面不支援完整支援
預處理語句不支援支援(防 SQL 注入)
多重查詢不支援支援
事務控制不支援支援
PHP 版本支援PHP 5.5.0 棄用,7.0.0 移除PHP 5.0+ 持續維護

常見問題:Class 'mysqli' not found 解決方案

許多開發者在使用 new mysqli('localhost', 'username', 'password', 'dbname') 時遇到 Fatal error: Class 'mysqli' not found 錯誤。這是因為 mysqli 擴展雖然內建於 PHP,但預設並未啟用,需手動開啟:

Windows 環境

  1. 開啟 php.ini 設定檔
  2. 搜尋 ;extension=php_mysqli.dll
  3. 移除前方的分號 ; 取消註解
  4. 重啟 Web 伺服器(Apache/Nginx/IIS)

Linux 環境

編譯安裝 PHP 時需加入 --with-mysqli 參數,或使用套件管理器安裝:

# Ubuntu/Debian
sudo apt-get install php-mysqli

# CentOS/RHEL
sudo yum install php-mysqli

最佳實踐建議

  • 新專案務必使用 mysqli 或 PDO:mysql 擴展已被移除,不再獲得安全性更新
  • 善用預處理語句:有效防範 SQL 注入攻擊
  • 啟用持久連接:高併發場景下可顯著提升效能
  • 錯誤處理:使用 mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT) 開啟例外錯誤報告

遷移舊專案時,可參考 PHP 官方文件的 遷移指南,逐步替換 mysql_* 函數為對應的 mysqli_* 版本或物件導向寫法。

copyright © 萬盛學電腦網 all rights reserved