男女疯狂一边摸一边做羞羞视频|啊好深好硬快点用力别停动态图|亚洲一区无码中文字幕|特级无码毛片免费视频播放▽|久久狠狠躁免费观看|国内精品久久久久久网站

Overview

這一部分對在PHP應用開(kāi)發(fā)過(guò)程中需要和Mysql數據庫交互時(shí)可用的選擇進(jìn)行一個(gè)簡(jiǎn)單介紹。

什么是API?

一個(gè)應用程序接口(Application Programming Interface的縮寫(xiě)),定義了類(lèi),方法,函數,變量等等一切 你的應用程序中為了完成特定任務(wù)而需要調用的內容。在PHP應用程序需要和數據庫進(jìn)行交互的時(shí)候所需要的API 通常是通過(guò)PHP擴展暴露出來(lái)(給終端PHP程序員調用)。

API可以是面向過(guò)程的,也可以是面向對象的。對于面向過(guò)程的API,我們通過(guò)調用函數來(lái)完成任務(wù),而對于面向對象的API, 我們實(shí)例化類(lèi),并在實(shí)例化后得到的對象上調用方法。對于這兩種接口而言,后者通常是首選的,因為它更加現代化,并且 給我們帶來(lái)了良好的代碼結構。

當構建一個(gè)需要連接到MySQL服務(wù)端的PHP應用的時(shí)候,有好幾種API可供選擇。此文檔就是討論這些可用的API并討論如何為 你的應用選擇一個(gè)最佳的解決方案。

什么是連接器?

在MySQL文檔中,術(shù)語(yǔ)connector解釋為“一段允許你的應用連接到MySQL數據庫服務(wù)器的軟件代碼”。 MySQL提供了很多語(yǔ)言的連接器,其中包括PHP的。

在你的PHP應用需要和一個(gè)數據庫服務(wù)器交互的時(shí)候,你需要書(shū)寫(xiě)PHP代碼去完成“連接數據庫服務(wù)器”,“查詢(xún)數據庫“以及其他數據庫相關(guān)功能 等一系列活動(dòng)。你的PHP應用將會(huì )使用提供這些API的軟件,或者在需要的時(shí)候使用一些中間庫,來(lái)處理你的應用和數據庫服務(wù)器之間的交互。 這種軟件通常被認為是連接器,它允許你的引用連接到數據庫服務(wù)器。

什么是驅動(dòng)?

驅動(dòng)是一段設計用來(lái)于一種特定類(lèi)型的數據庫服務(wù)器進(jìn)行交互的軟件代碼。驅動(dòng)可能會(huì )調用一些庫,比如MySQL客戶(hù)端庫或者M(jìn)ySQL Native驅動(dòng)庫。 這些庫實(shí)現了用于和MySQL數據庫服務(wù)器進(jìn)行交互的底層協(xié)議。

通過(guò)一個(gè)例子PDO(PHP Database Object的縮寫(xiě))數據庫抽象層可以 使用多種特定數據庫的驅動(dòng)。其中一種驅動(dòng)就是PDO MYSQL驅動(dòng),它就是與MySQL服務(wù)器之間的接口。

有時(shí)大家會(huì )不加區分的使用連接器和驅動(dòng)這兩個(gè)術(shù)語(yǔ)。在MySQL相關(guān)文檔中driver術(shù)語(yǔ)被作為一個(gè)連接器包 中提供特定數據庫部分的軟件代碼。

什么是擴展?

在PHP文檔中你還會(huì )發(fā)現很多其他的擴展。PHP代碼是由一個(gè)核心,一些可選擴展組成了核心功能。PHP 的MySQL相關(guān)擴展,比如mysqli,mysql都是基于PHP擴展框架實(shí)現的。

擴展一個(gè)典型的作用就是暴露一個(gè)API給PHP程序員,允許擴展自己的功能可以被程序員使用。當然,也有一部分基于PHP擴展框架 開(kāi)發(fā)的擴展不會(huì )給PHP程序員暴露API接口。

比如說(shuō)PDO MySQL驅動(dòng)擴展,就沒(méi)有向PHP程序員暴露API接口,但是向它上層的PDO層提供了一個(gè)接口。

術(shù)語(yǔ)API和擴展描述的不是同一類(lèi)事物,因為擴展可能并不需要暴露一個(gè)API接口給程序員。

PHP中提供的用于MySQL的主要API是什么?

當考慮連接到MySQL數據庫服務(wù)器的時(shí)候,有三種主要的API可供選擇:

  • PHP的MySQL擴展

  • PHP的mysqli擴展

  • PHP數據對象(PDO)

三者都有各自的優(yōu)缺點(diǎn)。下面的討論就是為了對每種API的關(guān)鍵方面給出一個(gè)簡(jiǎn)短的介紹。

什么是PHP的MySQL擴展?

這是設計開(kāi)發(fā)允許PHP應用與MySQL數據庫交互的早期擴展。mysql擴展提供了一個(gè)面向過(guò)程 的接口,并且是針對MySQL4.1.3或更早版本設計的。因此,這個(gè)擴展雖然可以與MySQL4.1.3或更新的數據庫服務(wù)端 進(jìn)行交互,但并不支持后期MySQL服務(wù)端提供的一些特性。

注意:

如果你是使用MySQL4.1.3或更新的服務(wù)端版本,強烈建議你使用mysqli 擴展替代它。

mysql擴展的源代碼在PHP擴展目錄ext/mysql下。

對于mysql擴展的更多信息,請參閱Mysql(原始)。

什么是PHP的mysqli擴展?

mysqli擴展,我們有時(shí)稱(chēng)之為MySQL增強擴展,可以用于使用 MySQL4.1.3或更新版本中新的高級特性。mysqli擴展在PHP 5及以后版本中包含。

mysqli擴展有一系列的優(yōu)勢,相對于mysql擴展的提升主要有:

  • 面向對象接口

  • prepared語(yǔ)句支持(譯注:關(guān)于prepare請參閱mysql相關(guān)文檔)

  • 多語(yǔ)句執行支持

  • 事務(wù)支持

  • 增強的調試能力

  • 嵌入式服務(wù)支持

注意:

如果你使用MySQL4.1.3或更新版本,強烈建議你使用這個(gè)擴展。

在提供了面向對象接口的同時(shí)也提供了一個(gè)面向過(guò)程的接口。

mysqli擴展是使用PHP擴展框架構建的,它的源代碼在PHP源碼目錄下的ext/mysqli中。

對于mysqli擴展的更多信息,請參閱Mysqli。

什么是PDO?

PHP數據對象,是PHP應用中的一個(gè)數據庫抽象層規范。PDO提供了一個(gè)統一的API接口可以使得你的PHP應用不去關(guān)心具體要 連接的數據庫服務(wù)器系統類(lèi)型。也就是說(shuō),如果你使用PDO的API,可以在任何需要的時(shí)候無(wú)縫切換數據庫服務(wù)器,比如從Firebird 到MySQL,僅僅需要修改很少的PHP代碼。

其他數據庫抽象層的例子包括Java應用中的JDBC以及Perl中的DBI。

當然,PDO也有它自己的先進(jìn)性,比如一個(gè)干凈的,簡(jiǎn)單的,可移植的API,它最主要的缺點(diǎn)是會(huì )限制讓你不能使用 后期MySQL服務(wù)端提供所有的數據庫高級特性。比如,PDO不允許使用MySQL支持的多語(yǔ)句執行。

PDO是基于PHP擴展框架實(shí)現的,它的源碼在PHP源碼目錄的ext/pdo下。

PDO的更多信息,請參閱PDO。

什么是PDO的MySQL驅動(dòng)器?

PDO的MySQL驅動(dòng)并不是一套API,至少從PHP程序員的角度來(lái)看是這樣的。實(shí)際上,PDO的MySQL驅動(dòng)處于PDO自己的下層, 提供了特定的Mysql功能。程序員直接調用PDO的API,而PDO使用了PDO的MySQL驅動(dòng)完成與MySQL服務(wù)器端的交互。

PDO的MySQL驅動(dòng)是眾多PDO驅動(dòng)中的一個(gè)。其他可用的PDO驅動(dòng)包括Firebird,PostgreSQL等等。

PDO的MySQL驅動(dòng)是基于PHP擴展框架實(shí)現的。它的源碼在PHP源碼目錄下的ext/pdo_mysql。 它沒(méi)有向PHP程序員暴露API。

PDO的MySQL擴展的更多信息請參閱MySQL (PDO)。

什么是PHP的MySQL Native 驅動(dòng)?

為了與MySQL數據庫服務(wù)端進(jìn)行交互,mysql擴展,mysqli擴展, PDO MySQL驅動(dòng)都使用了實(shí)現了必要的協(xié)議的底層庫。以前,可用的庫只有MySQL客戶(hù)端庫和libmysql。

然而,libmysql包含的接口沒(méi)有針對與PHP的應用交互進(jìn)行優(yōu)化,libmysql 是早期為C應用程序設計的?;谶@個(gè)原因,MySQL Native驅動(dòng)mysqlnd,作為libmysql的一個(gè) 針對PHP應用的修改版本被開(kāi)發(fā)。

mysql,mysqli以及PDO Mysql驅動(dòng)都可以各自配置使用 libmysql或者mysqlnd。mysqlnd作為一個(gè)專(zhuān)門(mén)設計 用于PHP系統的庫,它在內存和速度上都比libmysql有很大提升。非常希望你去嘗試這些提升。

注意:

MySQL Native驅動(dòng)僅僅可以在MySQL服務(wù)端版本為4.1.3及以后版本才可以使用。

MySQL Native驅動(dòng)是基于PHP擴展框架實(shí)現的。源代碼位于PHP源碼目錄的ext/mysqlnd下。 它沒(méi)有向PHP程序員暴露接口。

特性比較

下表比較了PHP中三種主要的MySQL連接方式的功能:

  PHP的mysqli擴展 PDO (使用PDO MySQL驅動(dòng)和MySQL Native驅動(dòng)) PHP的mysql擴展
引入的PHP版本 5.0 5.0 3.0之前
PHP5.x是否包含
MySQL開(kāi)發(fā)狀態(tài) 活躍 在PHP5.3中活躍 僅維護
在MySQL新項目中的建議使用程度 建議 - 首選 建議 不建議
API的字符集支持
服務(wù)端prepare語(yǔ)句的支持情況
客戶(hù)端prepare語(yǔ)句的支持情況
存儲過(guò)程支持情況
多語(yǔ)句執行支持情況 大多數
是否支持所有MySQL4.1以上功能 大多數
男女疯狂一边摸一边做羞羞视频|啊好深好硬快点用力别停动态图|亚洲一区无码中文字幕|特级无码毛片免费视频播放▽|久久狠狠躁免费观看|国内精品久久久久久网站