MySQL、 MySQLi 和 PDO 有什么区别?

MySQL、 MySQLiPDO有什么区别?

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

121387 次浏览

Mysqli 是 mysql 的增强版。

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

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

  • Mysql是历史 API
  • Mysqli是历史 API 的新版本。它应该有更好的性能和更好的功能集。此外,API 是面向对象的。
  • PDO _ MySQL 是用于 PDO 的 MySQL。PDO 已经在 PHP 中引入,该项目的目标是为所有的数据库访问制作一个通用的 API,因此理论上,您应该能够在 RDMS 之间迁移,而不需要更改任何代码(如果您在查询中没有使用特定的 RDBM 函数) ,也是面向对象的。

所以这取决于你想要产生什么样的代码。如果你喜欢面向对象的层或纯函数..。

我的建议是

  1. PDO
  2. MySQLi
  3. Mysql

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

从 PHP 中使用 MySQL 有(超过)三种流行的方法。这里概述了 PHP: 选择 API的一些特性/区别:

  1. (不赞成) Mysql 函数是程序化的,使用手动转义。
  2. MySQLi 是 mysql 函数的替代品,具有面向对象和过程的版本,支持预处理语句。
  3. PDO (PHP Data Objects)是一个通用资料库抽象层,在许多其他数据库中支持 MySQL。它提供了准备好的语句,并且在如何返回数据方面具有很大的灵活性。

我建议对准备好的语句使用 PDO。它是一个设计良好的 API,如果需要,它将使您更容易地移动到另一个数据库(包括任何支持 ODBC的数据库)。

具体来说,与旧的 MySQL 扩展相比,MySQLi 扩展提供了以下非常有用的好处。

OOP 接口(除了过程) 准备好的声明支持 事务 + 存储过程支持 语法更好 提高车速 增强型调试

公共服务处扩建部分

PHP Data Objects 延伸是资料库抽象层。具体来说,这不是一个 MySQL 接口,因为它为许多数据库引擎(当然包括 MYSQL)提供了驱动程序。

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

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