在完成了一项关于互联网的研究(以及在Stackoverflow)之后 - 我仍然在努力确定哪种方法最适合我学习/使用,在PHP编程时挖掘更多。PHP | PEAR:MDB2 vs PDO vs Native-PHP(原始)
我明白一些使用DAO的优势,当处理数据库时使用直接使用mysql_ *函数分布在应用程序文件中。
当涉及到决定MDB2与PDO - 有一件事情,PDO的闪耀是事实,它不抽象的mysql_ *函数直接与mysql的API API会谈,就像mysql_ *一样。它也是PHP编译后的C扩展,因此速度非常快。尽管MDB2(或其他库)是用PHP编写的,所以它们需要在运行时进行解析并位于mysql_ *函数之上。那么,就速度而言,PDO赢得了?!?
当谈到在本机非抽象的PHP比较DB抽象层方式眼前一亮DB抽象层的 安全优势,在使用粘合剂PARAMS(预处理语句)的方式,将防止大多数SQL注入攻击,如果有需求/请求 - 即使它不常见 - (在这些DAO库中还有其他优点和很好的时间消耗功能),将来可以更容易地切换RDBMS类型。
无论如何,我希望有专家可以帮助我决定,而我应该使用其中一个库,如果是,哪一个是最值得推荐的?或者我应该编写自己的DAO库,以便通过我所有的项目都会在几年后得到改善?
谢谢。
PDO可能有一个编译组件,但它仍然做了很多处理,'原始'接口没有。仍然有开销,但在不同的地方。你会从这里得到的唯一好的答案是尝试pdo v.s. mdb2 v.s. “生”,看看哪一个在你的特定情况下更好。 –
我的确练习过PEAR:MDB2 - 两难之间是使用其中一个库(MDB2,PDO,ADOdb ..),如果是这样,最好推荐哪一个(因为它们基本都是为了相同的目的而用一点语法不同的),还是我应该抽象我自己的DAO - 这样我才能确切知道代码的外观,我可以完全控制它,而不是依靠三维代码?!?另外从我所了解的PDO中执行其他库会导致他直接与数据库进行通信,而不是通过构建在mysql_ *函数之上的一些抽象 – Adam
mysql _ *()不是抽象。他们直接调用底层libmysql客户端库,就像PDO一样。 mysql _ *()只是更直接地映射到库调用。 –