为啥在 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? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
为啥 PHP PDO DSN 是 MySQL 与 PostgreSQL 不同的格式?
使用 PHP PDO 准备语句和 MySQL 选择字段为空的行