簡體   English   中英

想要升級用mysql *編寫的數據庫類。 我接下來應該使用什么?

[英]Want to upgrade my database class written in mysql*. What should I use next?

我是一名中級開發人員,直到今天,我還使用了幾年前我編寫的depracated mysql *函數的數據庫類。 我想升級它,但在我選擇之前,我想得到stackoverflow的意見。

我以前有兩個選擇。 MySQLi和PDO。 最近,一位高級開發人員告訴我完全刪除我的數據庫類,學習Doctrine DBAL並使用它。

我不太了解Doctrine DBAL。 這對我的迷你框架來說有點過分嗎?

我應該選擇和使用什么,為什么?

PDO非常好。 學說臃腫而緩慢。 我只有可怕的經歷,並且找不到任何有理由在PDO上使用它。 DBAL!= ORM順便說一下。 DBAL是DB抽象層。 PDO是數據訪問層。 無論如何,PDO是一個很好的工具。

謝謝你的好問題。

首先,關於MySQLi與PDO的問題。
如果您正在為自己的班級尋找新的基地

  • 如果您打算使用本機預處理語句,PDO是唯一的選擇,因為mysqli對它們的實現是可怕的。
  • 如果你已經在舊的基於mysql的類中擁有自己的占位符 - mysqli將更容易轉換。

如果您正在尋找全新的類,PDO也是唯一的選擇,因為它具有一些抽象功能,使得它的使用變得更加容易,並且產生了顯着更短的代碼。 最近我為PDO標簽編寫了一個wiki,解釋了它的一些功能(以及陷阱) - 你可能會發現它很有用。
但是,它缺乏許多重要的功能。 因此,手工制作的助手類仍然是最佳選擇。

如果你沒有實現占位符,我會建議你一個現成的類,因為占位符必須是這樣一個類的主要原因。
我已經讓SafeMysql牢記3個目標:安全,干燥代碼和易用性。
我希望你喜歡類型暗示占位符的想法。

至於學說 - 我個人不喜歡這種抽象層次。 我更喜歡盡可能接近SQL。 只有少數幫助安全和較少的代碼。

關於所有表演內容的說明。
我從來沒有見過DBAL會成為瓶頸的應用程序。 因此,無論(假想的)性能問題都是您最不關心的問題。
通過實際數據對實時環境進行實際操作是唯一可靠的證明。

世界上絕對沒有理由不使用MySqli或PDO - 無論你感覺最舒服。

恕我直言...

PS:我從來沒有聽說過“Doctrine DBAL”:)

PPS:另一個抽象層通常意味着更多的膨脹,性能下降和靈活性降低。 更不用說學習曲線了。 堅持PDO或MySqli的所有非常好的理由。

如果這僅適用於MySQL,請使用mysqli,因為與PDO相比,它略微(略微意味着高達10%)。 如果您想使用Doctrine DBAL的額外功能,如轉換或類型轉換,您可以嘗試一下。 如果沒有,請使用PDO,因為它比Doctrine DBAL快得多(最多10次)並且使用的內存更少。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM