php中mysql,mysqli,mysqlnd,pdo究竟是什麼

名詞解釋:

最開始的初學者,每每搞不清mysqli,mysqlnd,pdo究竟是什麼,下面先直接貼出最直觀的名字吧。php

MYSQL:This extension is deprecated as of PHP 5.5.0, and has been removed as of PHP 7.0.0. 
MYSQLI: MySQL Improved Extension 
MySQLND: MySQL Native Drive 
PDO:The PHP Data Objects。extension defines a lightweight, consistent interface for accessing databases in PHP。mysql

以上摘自 PHP官方手冊: http://php.net/manual/en/book.mysqli.php程序員

用中文說: 
MYSQL 也叫 Original MySQL,PHP4版本的MYSQL擴展,從PHP5起已經被廢棄,並別從PHP7開始已經被移除。sql

MYSQLI 叫作 「MySQL加強擴展」。數據庫

MYSQLND MYSQL NATIVE DIRVER 叫作MYSQL 「官方驅動」或者更加直接點的叫作「原生驅動」服務器

PDO PHP Data Objects PHP數據對象,是PHP應用中的一個數據庫抽象層規範。網絡

針對本篇文章函數

再補充幾個名詞解釋:

1 什麼是API?.net

一個應用程序接口(Application Programming Interface的縮寫),定義了類,方法,函數,變量等等一切 你的應用程序中爲了完成特定任務而須要調用的內容。在PHP應用程序須要和數據庫進行交互的時候所須要的API 一般是經過PHP擴展暴露出來(給終端PHP程序員調用)。設計

上文所說的MYSQL 和MYSQLI擴展就提供了這樣的API。

2什麼是驅動?

驅動是一段設計用來於一種特定類型的數據庫服務器進行交互的軟件代碼。驅動可能會調用一些庫,好比MySQL客戶端庫或者MySQL Native驅動庫。 這些庫實現了用於和MySQL數據庫服務器進行交互的底層協議。

在PHP拓展的角度上看,MYSQL和MYSQLi仍是比較上層的拓展,依賴更底層的庫去鏈接和訪問數據庫。
上文所說的MYSQLND 就是所說的底層的數據庫驅動。固然,還有一個驅動叫作libmysqlclient。至於如何選擇使用這兩種驅動的哪種,請看這裏選擇哪種底層數據庫驅動

總的來講:

從應用的層面上看,咱們經過PHP 的MYSQL或者MYSQLi擴展提供的API去操做數據庫。

從底層來看,MYSQLND提供了底層和數據庫交互的支持(能夠簡單理解爲和MySQL server進行網絡協議交互)。

而PDO,則提供了一個統一的API接口,使得你的PHP應用不去關心具體要鏈接的數據庫服務器系統類型。也就是說,若是你使用PDO的API,能夠在任何須要的時候無縫切換數據庫服務器。好比MYSQL,SQLITE任何數據庫都行。

即從大部分功能上看,PDO提供的API接口和MYSQLI提供的接口對於普通的增刪改查效果是一致的。

相關文章
相關標籤/搜索