2011-06-02 157 views
10

我剛剛第一次看到這個。我不知道,你可以做這樣的事情mysqli,OOP vs Procedural

new mysqli($host, $username, $password, $db); 

實例化的mysqli類這是全新的我...每一個連接到數據庫時,我已經在網上或書看到教程做這樣的事情:

$conn = mysqli_connect($host, $username, $password, $db); 

if (!$conn) { 
    die('Sorry, could not connect'); 
} 

爲什麼大多數教程都這樣做的程序方式有一個原因嗎?即使在我看到創建一個單獨的數據庫類的教程,告訴我使用程序風格的代碼...

與mysqli程序與oop有什麼區別?有沒有?我必須安裝某種擴展嗎?或者我可以在我的代碼中開始使用?這裏總共有新手,所以不太確定。

此外,什麼時候使用PDO vs mysqli是一個好主意?大型企業應用程序開發人員最常使用PDO嗎?或者只是一個偏好問題。

感謝您的幫助......

學習PHP已經迅速成爲上癮......我只是想知道更多。

+0

mysqli的大多數教程都是針對那些熟悉舊的mysql庫的人,他們只是程序性的。從mysql到過程mysqli的過渡不像人們轉向OO mysqli那樣是一種心理轉變。但是,正如下面的alex指出的那樣,使用PDO比使用上述任何一種都好,所以直接去那裏吧。 – 2011-06-02 01:17:42

回答

11

99%的PHP教程在互聯網上已經過時,主張可怕的代碼或由可能不應該教PHP的人編寫(通常都是上述內容)。你應該找到handful of good ones

開發人員(包括我)通常會比mysqli更喜歡PDO。首先,它可以處理比MySQL更多的數據庫。

+0

第一句話+1,如果可能的話,下一頁也會有+1。 – 2011-06-02 01:16:24

+1

鏈接的頁面被刪除。你能列出這個答案本身的好PHP教程嗎? – MAKZ 2014-10-25 02:38:37

+0

@MAKZ只要得到10k代表,你可以看到它:) – alex 2014-10-26 22:02:57

3

大多數mysqli_*函數是對象方法的別名(PHP在內部很容易使用C宏,所以許多擴展使用該方法)。但可用性也是爲了熟悉,所以舊的mysql函數的用戶可以更容易地採用新界面。使用OOP或程序界面實際上只是樣式/偏好。

現在PDO通常是首選,但它不提供許多mysql特有的功能。所以mysqli擴展可能還有一些用例。

4

回答您的問題但從

實際點是否有一個原因,大多數的教程做的程序呢?

足以說明原因與技術無關。

mysqli程序與oop有什麼區別?有沒有?

我一定要安裝任何擴展

否(除mysqli的本身,當然)。

此外,什麼時候使用PDO是一個好主意?

是的。事實上,PDO將是唯一的理智選擇。

你必須明白,mysqli函數集只是一個低級別的API,並不打算按原樣使用。必須在mysqli上實現一個包裝器,然後使用這個包裝器的方法。雖然PDO是這樣一個包裝已經,提供執行許多任務的幫助。我寫了a guide on PDO,強調它的好處並且公開了一些迷信,我希望你能找到你肯定有很多問題的答案。