为啥在 PHP 中使用 PDO 而不是 MySQL? [复制]

Posted

技术标签:

【中文标题】为啥在 PHP 中使用 PDO 而不是 MySQL? [复制]【英文标题】:Why use PDO over MySQL in PHP? [duplicate]为什么在 PHP 中使用 PDO 而不是 MySQL? [复制] 【发布时间】:2012-06-04 01:43:27 【问题描述】:

可能重复:mysqli or PDO - what are the pros and cons?php PDO and MySQLi

我最近问了一个question,结果有人告诉我在 MySQL 上使用“PDO”。这是为什么?与其他相比有什么优势?

【问题讨论】:

它是 PDO,代表 PHP 数据对象,而不是 POD 为了澄清,您仍然在访问 MySQL 数据库。 PDO 只是访问它的另一种(更好)方式 - 例如,您可以获得使用标准 mysql 函数无法完成的查询参数化。 PDO 是一个为与不同数据库引擎(MySQL、PostgreSQL 等)交互提供面向对象抽象的库,因此您只需使用一个 API 来处理所有连接。此外,PDO 支持准备好的语句,这意味着您无需在 SQL 查询中输入所有参数,而是只放置占位符,然后在尝试执行查询时绑定正确的值。这可以防止或至少使对您的应用程序执行 SQL 注入攻击变得非常困难。 这是关于 PDO 的非常好的教程 a2znotes.blogspot.in/2014/09/introduction-to-pdo.html 【参考方案1】:

mysql_* 功能不再维护,社区已开始deprecation process。相反,您应该了解prepared statements 并使用PDO 或MySQLi。

如果您无法决定,this article 应该会帮助您选择。不过,您应该知道,PDO 能够与不同类型的 RDBMS 一起工作,而 MySQLi 是为特定的 RDBMS 设计的。

如果您决定使用 PDO,建议您关注this tutorial。

【讨论】:

【参考方案2】:

首先,mysql_* 函数将是deprecated。

其次,PDO函数更易于使用,可以与非MySQL数据库一起使用。

另外值得注意的可能是你不必使用 PDO,mysqli 也可以!

【讨论】:

更正:它们将被弃用。 MySQL extension manual 中尚未提及此类弃用 感谢您指出这一点 - 更新了我的答案。【参考方案3】:

PDO 为您提供了访问各种数据库的统一方法。快速浏览一下 Internet 可能会有所帮助。

【讨论】:

以上是关于为啥在 PHP 中使用 PDO 而不是 MySQL? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PDO 在 PHP 中获取结果数组?

如何使用PDO在PHP中获取结果数组?

为啥 PHP PDO DSN 是 MySQL 与 PostgreSQL 不同的格式?

使用 PHP PDO 准备语句和 MySQL 选择字段为空的行

为啥这种“嵌套连接”适用于 PDO 而不适用于 MySql cli?

在 PHP 中使用 PDO 打开的 SQL 连接是不是必须关闭