在完成了一項關於互聯網的研究(以及在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 _ *()只是更直接地映射到庫調用。 –