PHP| pear :MDB2 vs PDO vs Native-PHP (Raw)

标签 php database pdo pear dao

在通过 Internet(以及 Stackoverflow 此处)进行了某种研究之后 - 我仍在努力决定哪种方法最适合我在使用 PHP 编程时学习/使用和挖掘更多信息。

我理解在处理数据库时使用 DAO 比使用分布在应用程序文件中的直接 mysql_* 函数有一些优势。

当要在 MDB2 与 PDO 之间做出决定时 - 支持 PDO 的一件事是它不抽象 mysql_* 函数,它直接与 mysql api 对话,就像mysql_* 做。它也是 PHP 的编译 C 扩展,因此速度非常快。虽然 MDB2(或其他库)是用 PHP 编写的,因此它们需要在运行时进行解析并位于 mysql_* 函数之上。那么,就速度而言,PDO 胜出?!?

当谈到比较 DB 抽象层与 native-non-abstracted-PHP 方式时, 数据库抽象层在使用 Binder 参数(准备好的语句)方面的安全优势可以防止大多数 sql 注入(inject)攻击,而且如果有需要/请求,将来更容易切换 RDBMS 类型 - 即使它是并不常见 -(那些 DAO 库中还有其他优势和耗时的特点)。

无论如何,我希望有专家可以帮助我决定我应该使用这些库中的一个,如果是的话,哪个是最推荐的?,或者我应该编写自己的 DAO 库来为我提供所有服务我的项目,会随着时间的推移得到改进吗?

谢谢。

最佳答案

问自己以下问题:

  • 瓶颈是我的代码还是数据库?当您对数据库执行数以千计的简单查询时,缓慢的 PHP 代码是一个问题。当您每个请求只执行几十个查询时,数据库层的开销可能不会引人注意
  • 您是否需要切换到不同的数据库系统?如果您正在为具有明确要求的客户工作,那么您很可能无论如何都会被 DMBS 锁定,并且您不必关心互操作性。

另外,MDB2 现在已经很老了。如果我是你,我会使用 Doctrines DBAL——它可以在没有 Doctrine 的情况下使用,并且它位于 PDO 之上。我不会使用旧的“本地”mysql_* 函数。

关于PHP| pear :MDB2 vs PDO vs Native-PHP (Raw),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7417784/

相关文章:

c# - 同步框架服务器到服务器同步

PDO 错误处理

php - 两个不同MySQL数据库之间的转换

java - 在objectdb中查询

php - Doctrine_RawSql 自定义选择

ruby-on-rails - 使用 git 流分支时的数据库问题(孤立迁移)

php - undefined variable UpdateQuery

php - 如何将诸如 "now() -interval ' 2 minutes'"之类的内容插入 PHP PDO 查询?

php - PHP 应该生成什么来返回 jQuery AJAX 请求?

php - 子句 "SQLSTATE[42S22]: Column not found: 1054 Unknown column ' 上的 ' in ' messages.user_ID '"- 使用 LEFT JOIN 时