1、PDO(PHP Data Object)擴(kuò)展為PHP定義了一個(gè)訪問數(shù)據(jù)庫的輕量、持久的接口。實(shí)現(xiàn)PDO接口的每一種數(shù)據(jù)庫驅(qū)動(dòng)都能以正則擴(kuò)展的形式把各自的特色表現(xiàn)出來。
主要:PDO擴(kuò)展只是一個(gè)抽象的接口層,利用PDO擴(kuò)展本身并不能實(shí)現(xiàn)任何數(shù)據(jù)庫操作,必須使用一個(gè)特定的數(shù)據(jù)庫PDO驅(qū)動(dòng)訪問數(shù)據(jù)庫
2、啟動(dòng)PDO方法:找到php.ini文件將
3、PDO預(yù)定義類:
PDO包含了三個(gè)預(yù)定義類:PDO、PDOStatement、PDOException
(1)PDO類:代表一個(gè)PHP和數(shù)據(jù)庫之間的連接
PDO:構(gòu)造器,創(chuàng)建一個(gè)新的PDO對(duì)象
beginTransaction:開始事務(wù)
commit:提交事務(wù)
errorCode:從數(shù)據(jù)庫返回一個(gè)錯(cuò)誤代號(hào),如果有的話
errorInfo:從數(shù)據(jù)庫返回一個(gè)含有錯(cuò)誤信息的數(shù)組,如果有的話
exec:執(zhí)行一條SQL語句并返回影響的行數(shù)
getAttribute:返回一個(gè)數(shù)據(jù)庫的連接屬性
lastInsertId:返回最新插入到數(shù)據(jù)庫的行(ID)
prepare:為執(zhí)行準(zhǔn)備一條SQL語句,返回語句執(zhí)行后的聯(lián)合結(jié)果集
query:執(zhí)行一條SQL語句并返回結(jié)果集
rollBack:回滾一個(gè)事務(wù)
setAttribute:設(shè)置一個(gè)數(shù)據(jù)庫連接屬性
(2)PDOStatement類:代表一條預(yù)處理語句以及語句執(zhí)行后的聯(lián)合結(jié)果集
bindColomn:綁定一個(gè)PHP變量到結(jié)果集輸出列
bindParam:綁定一個(gè)變量到PHP預(yù)處理語句中的參數(shù)
bindValue:綁定一個(gè)值到處理語句中的參數(shù)
closeCursor:關(guān)閉游標(biāo),使語句可以再次執(zhí)行
cloumnCount:返回結(jié)果集中列的數(shù)量
errorCode:從語句中返回一個(gè)錯(cuò)誤代號(hào),如果有的話
errorInfo:從語句中返回包含錯(cuò)誤信息的數(shù)組
execute:執(zhí)行一條預(yù)處理語句
fetch:從結(jié)果集中取出一行
fetchAll:從結(jié)果集中取出一個(gè)包含所有行的數(shù)組
fetchColomn:返回結(jié)果集中某一列的數(shù)據(jù)
getAttribute:返回一個(gè)PDOStatement屬性
getColomnMeta:返回結(jié)果集中某一列的結(jié)構(gòu)
nextRowset:返回下一個(gè)結(jié)果集
rowCount:返回SQL語句執(zhí)行后影響的行數(shù)
setAttribute:設(shè)置一個(gè)PDOStatement屬性
setFetchMode:為PDOStatement設(shè)定獲取數(shù)據(jù)
給一個(gè)事務(wù)處理的簡(jiǎn)單例子:
(事務(wù)的主要特性:原子性、一致性、獨(dú)立性和持久性)
4、PDO最大的特點(diǎn)是引入了參數(shù)綁定和預(yù)編譯
預(yù)編譯負(fù)責(zé)兩件事,轉(zhuǎn)移和軟解析提速。程序要支持預(yù)編譯,除了數(shù)據(jù)庫支持外,還需要驅(qū)動(dòng)支持(PDO和NySQLi支持)
5、PDO的效率問題
(1)在一個(gè)大表大數(shù)據(jù)量中進(jìn)行測(cè)試,PDO的CRUD效率比MySql直連低5%~15%,并且方差大于MySQL直連
(2)至于負(fù)載方面,PDO開啟長(zhǎng)連接后負(fù)載高于MySQL且比較穩(wěn)定。
其實(shí)在實(shí)際應(yīng)用中,90%的程序是不會(huì)進(jìn)行數(shù)據(jù)庫遷移的,有數(shù)據(jù)庫遷移的應(yīng)用程序少之又少。
新聞熱點(diǎn)
疑難解答