MySQL,MySQLi和PDO有什么区别?

MySQL, MySQLi和PDO有什么区别?

哪一个最适合与PHP-MySQL一起使用?

有(超过)三个stream行的方式来从PHP使用MySQL。

  1. DEPRECATED ) mysql函数是程序性的,使用手动转义。
  2. MySQLi是mysql函数的替代品,具有面向对象和程序的版本。 它支持准备好的语句。
  3. PDO (PHP数据对象)是在许多其他数据库中支持MySQL的通用数据库抽象层。 它提供了准备好的语句,并在返回数据方面具有很大的灵活性。

我会build议使用PDO与准备好的语句。 这是一个devise良好的API,如果有必要,可以让您更轻松地移动到另一个数据库(包括支持ODBC的任何数据库)。

这些是访问MySQL后端的不同API

  • mysql是历史API
  • mysqli是历史API的新版本。 它应该performance更好,有更好的function。 而且,API是面向对象的。
  • PDO_MySQL ,是PDO的MySQL。 PDO已经在PHP中引入,并且该项目的目标是为所有数据库访问创build一个通用的API,因此从理论上讲,您应该能够在RDMS之间进行迁移,而无需更改任何代码(如果在查询中不使用特定的RDBM函数),也是面向对象的。

所以这取决于你想要产生什么样的代码。 如果你喜欢面向对象的图层或简单的function…

我的build议是

  1. PDO
  2. 库MySQLi
  3. MySQL的

另外我的感觉是,mysql API可能会在未来的PHP版本中被删除。

有一张比较3个APIfunction的表格 。 尽可能地使用Mysqli,就像在PDO之后推出的最新版本一样,并且将来会更好地维护。

mysqli是mysql的增强版本。

PDO扩展定义了一个轻量级,一致的接口来访问PHP中的数据库。 实现PDO接口的每个数据库驱动程序都可以将特定于数据库的function作为常规的扩展function。

具体来说,MySQLi扩展提供了比以前的MySQL扩展更有用的好处。

OOP接口(除程序外)预处理语句支持事务+存储过程支持更好的语法速度改进增强的debugging

PDO扩展

PHP数据对象扩展是一个数据库抽象层。 具体而言,这不是MySQL接口,因为它提供了许多数据库引擎(当然包括MYSQL)的驱动程序。

PDO旨在提供一致的API,这意味着当数据库引擎发生更改时,代码更改以反映此应该是最小的。 使用PDO时,只需更改所使用的驱动程序,您的代码通常会在许多数据库引擎中“正常工作”。

除了跨数据库兼容,PDO还支持预处理语句,存储过程等,同时使用MySQL驱动程序。

简单地说,我们可以说MySQL改进的扩展,提供各种好处。mysqli扩展允许您访问由MySQL 4.1及更高版本提供的function。

PHP数据对象(PDO)扩展定义了一个轻量级的,一致的接口来访问PHP中的数据库。 实现PDO接口的每个数据库驱动程序都可以将特定于数据库的function作为常规的扩展function。 请注意,您不能使用自己的PDO扩展来执行任何数据库function; 您必须使用数据库特定的PDO驱动程序来访问数据库服务器。