2017-01-23 122 views
-1

他們似乎是同一回事,但卻不同。我不知道哪一個是哪個:我知道我們可以使用PDO作爲new PDO()並使用prepare()query()方法從數據庫中獲取數據。那麼,如果這是在擴展列表中提到的PDO,那麼pdo_mysql和mysqlnd究竟是什麼(以俗語來說)?php中的Mysqlnd,PDO和PDO_Mysql擴展有什麼區別?

+0

另見:http:php – mario

+0

我已經讀了它,我只是不能使它們三者之間的連接(沒有雙關語意) –

+1

我認爲*(如果我錯了,我肯定有人會糾正我),那麼mysqlnd是連接PHP到MySQL的實際驅動程序。 PDO和mysqli是通過mysqlnd將數據發送到mysql服務器的API。 – aynber

回答

-1

您需要PDO_Mysql才能在PDO中使用mysql數據庫。這是司機。

Mysqld是您使用PDO或mysqli訪問的Mysql服務器。

Mysqlnd是與Mysql服務器通信的庫/驅動程序,PDO和mysqli都使用它。

+3

如果你打算回答這個問題,做對了。顯示官方文檔中的引號。另外,OP詢問'mysqlnd' - 不是'mysqld'。到目前爲止,你所說的僅僅是邊際,可能只是一個評論。 –

2

PDO本身是由PHP提供的database abstraction layer。這可能不是頗有意味你想這樣做,但PHP將清除了在the PDO documentation

PDO提供一個數據訪問抽象層,這意味着,無論你使用的數據庫,可以使用相同的功能來發出查詢和獲取數據。 PDO不提供數據庫抽象;它不會重寫SQL或模擬缺少的功能。如果你需要這個設施,你應該使用一個完整的抽象層。

根據您的系統,you might need to enable its driver才能使用它。 (但可能不是。)

您可以將PDO與各種不同的數據庫(MySQL,Oracle,PostgreSQL等)一起使用,但對於要使用的數據庫類型,您需要enable the specific driver。從我之前鏈接的相同PDO介紹文檔:

請注意,您不能使用自己的PDO擴展執行任何數據庫函數;您必須使用數據庫特定的PDO驅動程序來訪問數據庫服務器。

pdo_mysql就是其中之一。這些驅動程序實現PDO接口,這意味着它們允許您使用prepare(),query()與您的特定數據庫

mysqlnd處理PHP和MySQL之間的通信。自PHP 5.4版以來,它一直是所有MySQL擴展的默認驅動程序(如pdo_mysql),所以如果您使用的是受支持的PHP版本,那麼您可能正在使用它。但它在幕後工作,只是處理溝通。您不會使用任何mysqlnd函數。從the mysqlnd documentation的「這不是什麼」一節:

儘管MySQL機驅動程序寫成一個PHP擴展,需要注意的是它並沒有提供新的API,以PHP程序員是非常重要的。 MySQL數據庫連接的編程器API由MySQL擴展mysqli和PDO MYSQL提供。這些擴展現在可以使用MySQL Native Driver的服務與MySQL服務器進行通信。因此,您不應該將MySQL Native Driver視爲API。

相關問題