許多開發者在配置 PHP 5 連接 MySQL 時,只啟用 extension=php_mysql.dll,卻不解為何官方文件仍建議同時啟用 extension=php_mysqli.dll。查閱 PHP 官方手冊(至 5.0.4 版)可知:PHP 5 不再內建 MySQL 客戶端庫,MySQL 與 Overload 擴充模組均從內建列表移除。
官方移除內建 MySQL 庫的原因
- 現代系統多預裝 MySQL 客戶端庫,重複內建易導致版本衝突(如 mod_auth_mysql 與 PHP 連結不同版本庫時產生錯誤)。
- 內建庫維護滯後,難以跟上 MySQL 伺服器版本更新。
- 未來 MySQL 庫採 GPL 授權,無法與 PHP 的 BSD/Apache 風格授權共存,移除內建庫可保持 PHP 授權純粹性。
為何需同時啟用兩個擴充模組?
- php_mysql.dll:提供基本 MySQL 函數支援,相容 MySQL 4.1.0 及以上版本,但不支援 4.1 版引入的新功能(如預處理語句、多重查詢、交易控制等)。
- php_mysqli.dll(MySQL Improved):專為 MySQL 4.1+ 設計,完整支援新特性,採用物件導向介面,效能與安全性更佳。
結論:若專案需使用 MySQL 4.1 以上的進階功能,務必同時啟用 php_mysql.dll 與 php_mysqli.dll;僅需基本查詢則啟用前者即可。PHP 4 時代因內建客戶端庫,無此顧慮。