有(超过)三种使用 PHP 访问 MySQL 的流行方式。下面列出了一些特点/差异,详见 PHP: Choosing an API: (已弃用)mysql 函数 是过程式的,并且需要手动转义。 MySQLi 是 mysql 函数的替代,提供面向对象和过程式版本,支持预处理语句。 PDO(PHP 数据对象)是一个通用的数据库抽象层,支持许多数据库,其中包括 MySQL 。它提供了预处理语句以及在如何返回数据方面的显著灵活性。 我建议使用带有预处理语句的 PDO。它是一个设计良好的 API,可以方便地将您迁移到其他数据库(包括任何支持ODBC的数据库)。
这些是访问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版本中被删除。
具体来说,MySQLi扩展相较于旧版MySQL扩展提供了以下极其有用的优势: 面向对象接口(除了过程式接口) 支持预处理语句 事务+存储过程支持 更加友好的语法 速度提升 增强调试 PDO扩展是一个数据库抽象层。具体来说,它不是一个仅仅针对MySQL的接口,因为它提供了许多数据库引擎的驱动程序(当然包括MYSQL)。 PDO旨在提供一致的API,这意味着当改变数据库引擎时,代码改变应该最小化。使用PDO时,只需通过更改所使用的驱动程序,您的代码通常可以跨多个数据库引擎“轻松运行”。 除了跨数据库兼容外,PDO也支持预处理语句、存储过程等,并使用MySQL驱动程序。