php連接到MySQL API:mysql,mysqli,pdo區(qū)別及聯(lián)建站知識
導(dǎo)讀:1建站知識Overview 這一部分對在PHP應(yīng)用開發(fā)過程中需要和Mysql數(shù)據(jù)庫交互時可用的選擇進(jìn)行一個簡單介紹。 什么是API? 一個應(yīng)用程序接口(Applicatiseo網(wǎng)站優(yōu)化培訓(xùn)seo網(wǎng)站優(yōu)化。
Overview
這一部分對在PHP應(yīng)用開發(fā)過程中需要和Mysql數(shù)據(jù)庫交互時可用的選擇進(jìn)行一個簡單介紹。
什么是API?
一個應(yīng)用程序接口(Application Programming Interface的縮寫),定義了類,方法,函數(shù),變量等等一切 你的應(yīng)用程序中為了完成特定任務(wù)而需要調(diào)用的內(nèi)容。在PHP應(yīng)用程序需要和數(shù)據(jù)庫進(jìn)行交互的時候所需要的API 通常是通過PHP擴(kuò)展暴露出來(給終端PHP程序員調(diào)用)。
API可以是面向過程的,也可以是面向?qū)ο蟮摹τ诿嫦蜻^程的API,我們通過調(diào)用函數(shù)來完成任務(wù),而對于面向?qū)ο蟮腁PI, 我們實(shí)例化類,并在實(shí)例化后得到的對象上調(diào)用方法。對于這兩種接口而言,后者通常是首選的,因?yàn)樗蝇F(xiàn)代化,并且 給我們帶來了良好的代碼結(jié)構(gòu)。
當(dāng)構(gòu)建一個需要連接到MySQL服務(wù)端的PHP應(yīng)用的時候,有好幾種API可供選擇。此文檔就是討論這些可用的API并討論如何為 你的應(yīng)用選擇一個最佳的解決方案。
什么是連接器?
在MySQL文檔中,術(shù)語connector解釋為“一段允許你的應(yīng)用連接到MySQL數(shù)據(jù)庫服務(wù)器的軟件代碼”。 MySQL提供了很多語言的連接器,其中包括PHP的。
在你的PHP應(yīng)用需要和一個數(shù)據(jù)庫服務(wù)器交互的時候,你需要書寫PHP代碼去完成網(wǎng)站seo優(yōu)化課程“連接數(shù)據(jù)庫服務(wù)器”,“查詢數(shù)據(jù)庫“以及其他數(shù)據(jù)庫相關(guān)功能 等一系列活動。你的PHP應(yīng)用將會使用提供這些API的軟件,或者在需要的時候使用一些中間庫,來處理你的應(yīng)用和數(shù)據(jù)庫服務(wù)器之間的交互。 這種軟件通常被認(rèn)為是連接器,它允許你的引用連接到數(shù)據(jù)庫服務(wù)器。
什么是驅(qū)動?
驅(qū)動是一段設(shè)計用來于一種特定類型的數(shù)據(jù)庫服務(wù)器進(jìn)行交互的軟件代碼。驅(qū)動可能會調(diào)用一些庫,比如MySQL客戶端庫或者M(jìn)ySQL Native驅(qū)動庫。 這些庫實(shí)現(xiàn)了用于和MySQL數(shù)據(jù)庫服務(wù)器進(jìn)行交互的底層協(xié)議。
通過一個例子PDO(PHP Database Object的縮寫)數(shù)據(jù)庫抽象層可以 使用多種特定數(shù)據(jù)庫的驅(qū)動。其中一種驅(qū)動就是PDO MYSQL驅(qū)動,它就是與MySQL服務(wù)器之間的接口。
有時大家會不加區(qū)分的使用連接器和驅(qū)動這兩個術(shù)語。在MySQL相關(guān)文檔中"driver"術(shù)語被作為一個連接器包 中提供特定數(shù)據(jù)庫部分的軟件代碼。
什么是擴(kuò)展?
在PHP文檔中你還會發(fā)現(xiàn)很多其他的擴(kuò)展。PHP代碼是由一個核心,一些可選擴(kuò)展組成了核心功能。PHP 的MySQL相關(guān)擴(kuò)展,比如mysqli,mysql都是基于PHP擴(kuò)展框架實(shí)現(xiàn)的。
擴(kuò)展一個典型的作用就是暴露一個API給PHP程序員,允許擴(kuò)展自己的功能可以被程序員使用。當(dāng)然,也有一部分基于PHP擴(kuò)展框架 開發(fā)的擴(kuò)展不會給PHP程序員暴露API接口。
比如說PDO MySQL驅(qū)動擴(kuò)展,就沒有向PHP程序員暴露API接口,但是向它上層的PDO層提供了一個接口。
術(shù)語API和擴(kuò)展描述的不是同一類事物,因?yàn)閿U(kuò)展可能并不需要暴露一個API接口給程序員。
PHP中提供的用于MySQL的主要API是什么?
當(dāng)考慮連接到MySQL數(shù)據(jù)庫服務(wù)器的時候,有三種主要的API可供選擇:
PHP的MySQL擴(kuò)展
PHP的mysqli擴(kuò)展
PHP數(shù)據(jù)對象(PDO)
三者都有各自的優(yōu)缺點(diǎn)。下面的討論就是為了對每種API的關(guān)鍵方面給出一個簡短的介紹。
什么是PHP的MySQL擴(kuò)展?
這是設(shè)計開發(fā)允許PHP應(yīng)用與MySQL數(shù)據(jù)庫交互的早期擴(kuò)展。mysql擴(kuò)展提供了一個面向過程 的接口,并且是針對MySQL4.1.3或更早版本設(shè)計的。因此,這個擴(kuò)展雖然可以與MySQL4.1.3或更新的數(shù)據(jù)庫服務(wù)端 進(jìn)行交互,但并不支持后期MySQL服務(wù)端提供的一些特性。
Note:
如果你是使用MySQL4.1.3或更新的服務(wù)端版本,強(qiáng)烈建議你使用mysqli 擴(kuò)展替代它。
mysql擴(kuò)展的源代碼在PHP擴(kuò)展目錄ext/mysql下。
對于mysql擴(kuò)展的更多信息,請參閱MySQL。
什么是PHP的mysqli擴(kuò)展?
mysqli擴(kuò)展,我們有時稱之為MySQL增強(qiáng)擴(kuò)展,可以用于使用 MySQL4.1.3或更新版本中新的高級特性。mysqli擴(kuò)展在PHP 5及以后版本中包含。
mysqli擴(kuò)展有一系列的優(yōu)勢,相對于mysql擴(kuò)展的提升主要有:
面向?qū)ο蠼涌?
prepared語句支持(譯注:關(guān)于prepare請參閱mysql相關(guān)文檔)
多語句執(zhí)行支持
事務(wù)支持
&nbs網(wǎng)站seo優(yōu)化p;
增強(qiáng)的調(diào)試能力
嵌入式服務(wù)支持
Note:
如果你使用MySQL4.1.3或更新版本,強(qiáng)烈建議你使用這個擴(kuò)展。
在提供了面向?qū)ο蠼涌诘耐瑫r也提供了一個面向過程的接口。
mysqli擴(kuò)展是使用PHP擴(kuò)展框架構(gòu)建的,它的源代碼在PHP源碼目錄下的ext/mysqli中。
對于mysqli擴(kuò)展的更多信息,請參閱Mysqli。
什么是PDO?
PHP數(shù)據(jù)對象,是PHP應(yīng)用中的一個數(shù)據(jù)庫抽象層規(guī)范。PDO提供了一個統(tǒng)一的API接口可以使得你的PHP應(yīng)用不去關(guān)心具體要 連接的數(shù)據(jù)庫服務(wù)器系統(tǒng)類型。也就是說,如果你使用PDO的API,可以在任何需要的時候無縫切換數(shù)據(jù)庫服務(wù)器,比如從Firebird 到MySQL,僅僅需要修改很少的PHP代碼。
其他數(shù)據(jù)庫抽象層的例子包括Java應(yīng)用中的JDBC以及Perl中的DBI。
當(dāng)然,PDO也有它自己的先進(jìn)性,比如seo網(wǎng)站優(yōu)化培訓(xùn)一個干凈的,簡單的,可移植的API,它最主要的缺點(diǎn)是會限制讓你不能使用 后期MySQL服務(wù)端提供所有的數(shù)據(jù)庫高級特性。比如,PDO不允許使用MySQL支持的多語句執(zhí)行。
PDO是基于PHP擴(kuò)展框架實(shí)現(xiàn)的,它的源碼在PHP源碼目錄的ext/pdo下。
PDO的更多信息,請參閱PDO。
什么是PDO的MySQL驅(qū)動器?
PDO的MySQL驅(qū)動并不是一套API,至少從PHP程序員的角度來看是這樣的。實(shí)際上,PDO的MySQL驅(qū)動處于PDO自己的下層, 提供了特定的Mysql功能。程序員直接調(diào)用PDO的API,而PDO使用了PDO的MySQL驅(qū)動完成與MySQL服務(wù)器端的交互。
PDO的MySQL驅(qū)動是眾多PDO驅(qū)動中的一個。其他可用的PDO驅(qū)動包括Firebird,PostgreSQL等等。
PDO的MySQL驅(qū)動是基于PHP擴(kuò)展框架實(shí)現(xiàn)的。它的源碼在PHP源碼目錄下的ext/pdo_mysql。 它沒有向PHP程序員暴露API。
PDO的MySQL擴(kuò)展的更多信息請參閱MySQL (PDO)。
什么是PHP的MySQL Native 驅(qū)動?
為了與MySQL數(shù)據(jù)庫服務(wù)端進(jìn)行交互,mysql擴(kuò)展,mysqli擴(kuò)展, PDO MySQL驅(qū)動都使用了實(shí)現(xiàn)了必要的協(xié)議的底層庫。以前,可用的庫只有MySQL客戶端庫和libmysql。
然而,libmysql包含的接口沒有針對與PHP的應(yīng)用交互進(jìn)行優(yōu)化,libmysql 是早期為C應(yīng)用程序設(shè)計的。基于這個原因,MySQL Native驅(qū)動mysqlnd,作為libmysql的一個 針對PHP應(yīng)用的修改版本被開發(fā)。
mysql,mysqli以及PDO Mysql驅(qū)動都可以各自配置使用 libmysql或者mysqlnd。mysqlnd作為一個專門設(shè)計 用于PHP系統(tǒng)的庫,它在內(nèi)存和速度上都比libmysql有很大提升。非常希望你去嘗試這些提升。
Note:
MySQL Native驅(qū)動僅僅可以在MySQL服務(wù)端版本為4.1.3及以后版本才可以使用。
MySQL Native驅(qū)動是基于PHP擴(kuò)展框架實(shí)現(xiàn)的。源代碼位于PHP源碼目錄的ext/mysqlnd下。 它沒有向PHP程序員暴露接口。
特性比較
下表比較了PHP中三種主要的MySQL連接方式的功能:
PHP的mysqli擴(kuò)展 PDO (使用PDO MySQL驅(qū)動和MySQL Native驅(qū)動) PHP的mysql擴(kuò)展
引入的PHP版本 5.0 5.0 3.0之前
PHP5.x是否包含 是 是 是
MySQL開發(fā)狀態(tài) 活躍 在PHP5.3中活躍 僅維護(hù)
在MySQL新項(xiàng)目中的建議使用程度 建議 - 首選 建議 不建議
API的字符集支持 是 是 否
服務(wù)端prepare語句的支持情況 是 是 否
客戶端prepare語句的支持情況 否 是 否
存儲過程支持情況 是 是 否
多語句執(zhí)行支持情況相關(guān)seo網(wǎng)站優(yōu)化培訓(xùn)seo網(wǎng)站優(yōu)化。
聲明: 本文由我的SEOUC技術(shù)文章主頁發(fā)布于:2023-05-24 ,文章php連接到MySQL API:mysql,mysqli,pdo區(qū)別及聯(lián)建站知識主要講述連接到,區(qū)別,SQL網(wǎng)站建設(shè)源碼以及服務(wù)器配置搭建相關(guān)技術(shù)文章。轉(zhuǎn)載請保留鏈接: http://www.bifwcx.com/article/web_6638.html
為你推薦與php連接到MySQL API:mysql,mysqli,pdo區(qū)別及聯(lián)建站知識相關(guān)的文章
-
通王TWCMS 2.0.3網(wǎng)站模板程序下載
(126)人喜歡 2024-01-15 -
Windows官方原版在哪里下載
(175)人喜歡 2024-01-15 -
WordPress網(wǎng)站模板發(fā)帖標(biāo)題顏色設(shè)置
(131)人喜歡 2024-01-07 -
修改discuz論壇帖子標(biāo)題80字符的長度限制
(249)人喜歡 2024-01-07 -
wordpress程序調(diào)用不帶超鏈接的Tag標(biāo)簽
(234)人喜歡 2024-01-05 -
網(wǎng)站在不同時期需調(diào)整內(nèi)容更新的方向
(112)人喜歡 2023-08-12