MySQL与PDO [重复]

Posted

技术标签:

【中文标题】MySQL与PDO [重复]【英文标题】:MySQL versus PDO [duplicate] 【发布时间】:2010-10-26 09:29:54 【问题描述】:

我对 php 还很陌生,并且使用标准的 mysql 数据库调用构建了一个中型网站。但是,我最近了解了 PDO,我希望从社区中了解是否值得从 MySQL 切换到 PDO。为了安全起见,我一直在使用mysql_real_escape_string

网站信息: 我混合使用了INSERTSELECT 调用。 SELECT调用返回的数据量不大(使用LIMIT返回的记录不超过30条)。也不会有很多INSERTs。该网站目前尚未上线,因此现在进行更改很容易。

在您的专业意见中,值得我花时间将网站从 MySQL 切换到 PDO 吗?还是和 MySQL 一样好?或者换句话说,如果有的话,现在切换到 PDO 的原因是什么?

【问题讨论】:

到目前为止我看到的使用 PDO 的最大缺点:切换到 PDO 的人仍然尝试使用 mysql_real_escape_string(),然后他们会在 *** 上发布一堆重复的问题不工作:P 【参考方案1】:

与 mysql_* 函数相比,PDO 具有以下优点:

它是跨数据库的,这意味着它对于不同的关系数据库是相同的接口。 它有助于防止 SQL 注入。 更简洁(使用面向对象的方法)。

以前有人问过这个问题,你可能想看看答案:

Moving from mysql to mysqli or pdo? mysqli or PDO - what are the pros and cons?

如果您正在开始一个新项目,我强烈建议您使用 PDO 或更高级别的库/ORM。如果您已经编写了很多没有它的代码,那可能不值得。

【讨论】:

感谢您的快速回复。是的,我看到了其他有用的帖子。我更想知道是否值得切换到 PDO。我不打算切换,但现在我已经了解了 PDO,我很好奇是否应该切换,或者继续使用 MYSQL 是否可以。 好吧,如果你已经写了很多代码,我不会打扰,但对于任何新项目,我会严格建议 PDO。 是的,有相当多的代码。我希望我早点了解它。但是很高兴听到如果我不使用它不是世界末日。再次感谢! 我同意它更干净。我不知道跨数据库是否真的是一个优势。只有正确使用它才能帮助防止 SQL 注入。它不一定更快,我不相信你可以在不引用基准的情况下做出可信的声明。【参考方案2】:

PDO 具有上面链接的页面中列出的优点:数据库抽象(即您的代码可以跨各种类型的 DB 移植),如果您使用它准备好的,它可以为您处理许多常见的安全问题声明功能,并将结果作为 Class 实例返回(通过鼓励面向对象的方法,它本身可以极大地改进您的代码)等等,等等。

但是,最好的方法是让您查看诸如 Doctrine 之类的 ORM 库。考虑到您的项目规模,这似乎有点矫枉过正,但坦率地说,开始学习最佳实践永远不会太早。 Zend 框架的主要开发人员提供的关于如何构建防弹、可维护的数据库驱动应用程序的优秀概述可以在以下位置观看 http://mtadata.s3.amazonaws.com/webcasts/20090724-playdoh.wmv

【讨论】:

以上是关于MySQL与PDO [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在codeigniter普通mysql和自定义pdo中运行并发数据库连接[重复]

检查重复条目与使用 PDO errorInfo 结果

使用 PDO 选择 MYSQL 中的 PHP 变量 [重复]

MySQL IN 语句的 PDO 绑定值 [重复]

pdo 相对于 mysql_* 或 mysqli_* 的优势 [重复]

旧 mysql 函数的 PDO 等价物,如 fetch assoc [重复]