什么叫做"扩展"?
在PHP中你会发现有很多其他的扩展. PHP代码是由一个核心和一些可选扩展组成了核心功能. PHP的MySQL相关扩展, 比如mysqli,mysql都是基于PHP扩展框架实现的.
扩展的一个典型的作用就是暴露一个API给PHP程序员, 允许扩展自己的功能可以被程序员使用.
PHP中提供的用于MySQL的主要API是什么?
当考虑连接到MySQL数据库服务器的时候,有三种主要的API可供选择:
- PHP的MySQL扩展
- PHP的mysqli扩展
- PHP数据对象(PDO)
三者都有各自的优缺点。下面的讨论就是为了对每种API的关键方面给出一个简短的介绍。
- 什么是PHP的MySQL扩展?
这是设计开发允许PHP应用与MySQL数据库交互的早期扩展. mysql扩展提供了一个面向过程的接口, 并且是针对MySQL4.1.3或更早版本设计的. 因此, 这个扩展虽然可以与MySQL4.1.3或更新的数据库服务端 进行交互, 但并不支持后期MySQL服务端提供的一些特性.
Note:
如果你是使用MySQL4.1.3或更新的服务端版本, 强烈建议你使用mysqli扩展替代它.
对于mysql扩展的更多信息,请参阅Mysql。
- 什么是PHP的mysqli扩展?
mysqli扩展, 我们有时称之为MySQL增强扩展, 可以用于使用 MySQL4.1.3或更新版本中新的高级特性. mysqli扩展在PHP 5及以后版本中包含.
mysqli扩展有一系列的优势, 相对于mysql扩展的提升主要有:- 面向对象接口
- prepared语句支持(译注:关于prepare请参阅mysql相关文档)
- 多语句执行支持
- 事务支持
- 增强的调试能力
- 嵌入式服务支持
Note:
如果你使用MySQL4.1.3或更新版本, 强烈建议你使用这个扩展.
在提供了面向对象接口的同时也提供了一个面向过程的接口.
对于mysqli扩展的更多信息,请参阅[Mysqli](http://php.net/manual/zh/book.mysqli.php)。
- 什么是PDO?
PHP数据对象, 是PHP应用中的一个数据库抽象层规范. PDO提供了一个统一的API接口, 可以使得你的PHP应用不去关心具体要连接的数据库服务器系统类型. 也就是说, 如果你使用PDO的API, 可以在任何需要的时候无缝切换数据库服务器, 比如从Firebird 到MySQL, 仅仅需要修改很少的PHP代码.
其他数据库抽象层的例子包括Java应用中的JDBC以及Perl中的DBI。
当然, PDO也有它自己的先进性, 比如一个干净的, 简单的, 可移植的API, 它最主要的缺点是会限制让你不能使用后期MySQL服务端提供所有的数据库高级特性. 比如, PDO不允许使用MySQL支持的多语句执行.
PDO的更多信息,请参阅PDO。