【问题标题】:What is the difference between MySQL, MySQLi and PDO? [closed]MySQL、MySQLi 和 PDO 有什么区别? [关闭]
【发布时间】:2011-01-12 12:59:27
【问题描述】:

MySQL、MySQLiPDO有什么区别?

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

【问题讨论】:

    标签: php mysql pdo mysqli


    【解决方案1】:

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

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

    我建议将 PDO 与准备好的语句一起使用。它是一个精心设计的 API,可以让您在必要时更轻松地迁移到另一个数据库(包括任何支持 ODBC 的数据库)。

    【讨论】:

    • 对于程序你必须使用 mysql_*() 函数,而对于 OO 你使用 mysqli,经常会感到困惑!事实上,mysqli 完全取代了 mysql 的早期(PHP 4)实现。 mysqli可以同时使用程序风格和OO风格。
    • @Patrick,谢谢。我已经更正了。
    【解决方案2】:

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

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

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

    我的建议是

    1. PDO
    2. MySQLi
    3. mysql

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

    【讨论】:

    • 没有感觉了:PHP7去掉了mysql API,留下了PDO和mysqli
    【解决方案3】:

    mysqli是mysql的增强版。

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

    【讨论】:

    • 从手册文件中复制不是很有用。
    【解决方案4】:

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

    OOP 接口(除了程序) 准备好的声明支持 事务+存储过程支持 更好的语法 速度改进 增强调试

    PDO 扩展

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

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

    除了跨数据库兼容之外,PDO 还支持准备好的语句、存储过程等,同时使用 MySQL 驱动程序。

    【讨论】:

      猜你喜欢
      • 2013-01-28
      • 2010-09-06
      • 1970-01-01
      • 2011-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-05
      相关资源
      最近更新 更多