標籤:
想用php產生一個mysql資料字典匯出來,用到下面代碼會
$mysql_conn = mysql_connect ( "$dbserver", "$dbusername", "$dbpassword" ) or die ( "Mysql connect is error." );
在php5.5.12版本運行會提示
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in D:\soft\develop\php\wamp\2.5\wamp\www\generate_mysql.php on line 16
看來會廢棄了,不建議使用了,程式無法啟動並執行。使用mysqli or PDO 來替代。到高版本,根本無法使用這個函數了。
我想知道哪個php版本開始就會開始不建議使用這個函數了,所以去官網www.php.net搜尋這個函數。有這樣的介紹:
本擴充自 PHP 5.5.0 起已廢棄,並在將來會被移除。應使用 MySQLi 或 PDO_MySQL 擴充來替換之。參見 MySQL:選擇 API 指南以及相關 FAQ 以擷取更多資訊。用以替代本函數的有:
- mysqli_connect()
- PDO::__construct()
地址:http://php.net/manual/zh/function.mysql-connect.php\
給我們做介面服務的啟發
到高版本,沒有相容舊太舊版本的函數,為什麼這樣子?從php官方組織維護源碼角度來說,這個函數肯定是沒啥優勢了,去進行最佳化這個函數,還不如對它進行廢棄掉
我們在網站,需要提供給介面給公司內部其他子系統調用。也會存在介面升級,原來的介面設計有缺陷,不想去修複了。乾脆建議使用新版本的介面了。
思考,我何不也弄一個類似的提升呢。提示調用方升級到新介面去使用。
突然發現,從溝通成本角度考慮,把提示資訊放在介面返回給調用方,會推進改進的速度。
為什麼官方要把這個函數禁用掉?而不是去修複,最佳化呢?
效能考慮,安全考慮。去官網找答案
Recommended API
It is recommended to use either the mysqli or PDO_MySQL extensions. It is not recommended to use the old mysql extension for new development, as it has been deprecated as of PHP 5.5.0 and will be removed in the future. A detailed feature comparison matrix is provided below. The overall performance of all three extensions is considered to be about the same(三個擴充的效能不相上下). Although the performance of the extension contributes only a fraction of the total run time of a PHP web request(效能考慮在php的web請求中是一小部分考慮,即不僅僅是效能考慮). Often, the impact is as low as 0.1%(影響是很小的,0.1%)
看官網介紹,不是效能考慮才棄用那個擴充。反正就是棄用,不想去維護那個了。我也沒搞清楚。不過深有同感,舊的擴充代碼量也不少,去最佳化,介面結構始終無法達到質的提升,還不如新開一個?
mysqli擴充使用了mysqlnd這個庫來操作資料庫。更加推薦。
php高版本不再使用mysql_connect()來串連資料庫