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

时间:2011-09-14 14:12:34

标签: php database pdo pear dao

在通过互联网进行一项研究之后(在Stackoverflow上) - 我仍然在努力决定哪种方法最适合我学习/使用,并在PHP编程时挖掘更多。

我理解在处理数据库时使用 DAO的一些优势,而不是在应用程序文件中使用直接的mysql _ * 函数。

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

比较 DB抽象层而非本地非抽象-PHP 方式 DB抽象层的安全优势在于使用绑定器参数(预备语句)来防止大多数sql注入攻击,而且如果有需要/请求将来更容易切换RDBMS类型 - 即使它是不常见 - (这些DAO库中还有其他优点和消耗时间特性)。

无论如何,我希望有专家可以帮助我决定我应该使用其中一个库,如果是,哪一个是最推荐的?,或者我应该编写自己的DAO库来为我提供服务我的项目会在几年后得到改善吗?

感谢。

1 个答案:

答案 0 :(得分:4)

问自己这些问题:

  • 我的代码是瓶颈,还是数据库?当您对数据库进行数千次简单查询时,慢速PHP代码就成了问题。当你每个请求只进行几十次查询时,db层的开销可能不会很明显
  • 您是否需要切换到其他数据库系统?如果您正在为具有明确要求的客户工作,那么您很可能无论如何都要锁定DMBS,而且您不必关心互操作性。

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