MySQL,MySQLi和PDO有什么区别?

时间:2010-02-03 08:59:55

标签: php mysql pdo mysqli

MySQL,MySQLiPDO之间有什么区别?

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

5 个答案:

答案 0 :(得分:94)

有三种流行的方法可以从PHP使用MySQL。这概述了一些功能/差异PHP: Choosing an API

  1. DEPRECATED mysql functions是程序性的,并使用手动转义。
  2. MySQLi是mysql函数的替代品,具有面向对象和过程版本。它支持准备好的陈述。
  3. PDO(PHP数据对象)是一个通用的数据库抽象层,在许多其他数据库中支持MySQL。它提供了准备好的语句,并且在返回数据方面具有很大的灵活性。
  4. 我建议将PDO与准备好的语句一起使用。它是一个设计良好的API,如果需要,可以让您更轻松地移动到另一个数据库(包括支持ODBC的任何数据库)。

答案 1 :(得分:41)

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

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

所以这取决于你想要生成什么样的代码。如果您更喜欢面向对象的图层或普通函数......

我的建议是

  1. PDO
  2. 库MySQLi
  3. MySQL的
  4. 我的感觉是,mysql API可能会在PHP的未来版本中被删除。

答案 2 :(得分:7)

table比较3个API功能。尽可能使用Mysqli,这是PDO之后推出的最新版本,并且将来会更好地维护。

答案 3 :(得分:3)

mysqli是mysql的增强版本。

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

答案 4 :(得分:3)

具体来说,MySQLi扩展提供了以下非常有用的优点,而不是旧的MySQL扩展。

OOP接口(除程序外) 准备好的声明支持 交易+存储过程支持 更好的语法 速度提升 增强调试

PDO扩展

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

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

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