最开始的初学者,每每搞不清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提供的接口对于普通的增删改查效果是一致的。