對PHP PDO的一些認識小結,phppdo小結
1、PDO(PHP Data Object)擴充為PHP定義了一個訪問資料庫的輕量、持久的介面。實現PDO介面的每一種資料庫驅動都能以正則擴充的形式把各自的特色表現出來。
主要:PDO擴充只是一個抽象的介面層,利用PDO擴充本身並不能實現任何資料庫操作,必須使用一個特定的資料庫PDO驅動訪問資料庫
2、啟動PDO方法:找到php.ini檔案將
複製代碼 代碼如下:
;extension=php_pdo.dll
前的分號去掉即可(linux環境下類似)
3、PDO預定義類:
PDO包含了三個預定義類:PDO、PDOStatement、PDOException
(1)PDO類:代表一個PHP和資料庫之間的串連
PDO:構造器,建立一個新的PDO對象
beginTransaction:開始事務
commit:提交事務
errorCode:從資料庫返回一個錯誤代號,如果有的話
errorInfo:從資料庫返回一個含有錯誤資訊的數組,如果有的話
exec:執行一條SQL語句並返回影響的行數
getAttribute:返回一個資料庫的串連屬性
lastInsertId:返回最新插入到資料庫的行(ID)
prepare:為執行準備一條SQL語句,返回語句執行後的聯合結果集
query:執行一條SQL語句並返回結果集
rollBack:復原一個事務
setAttribute:設定一個資料庫連接屬性
(2)PDOStatement類:代表一條預先處理語句以及語句執行後的聯合結果集
bindColomn:綁定一個PHP變數到結果集輸出資料行
bindParam:綁定一個變數到PHP預先處理語句中的參數
bindValue:綁定一個值到處理語句中的參數
closeCursor:關閉遊標,使語句可以再次執行
cloumnCount:返回結果集中列的數量
errorCode:從語句中返回一個錯誤代號,如果有的話
errorInfo:從語句中返回包含錯誤資訊的數組
execute:執行一條預先處理語句
fetch:從結果集中取出一行
fetchAll:從結果集中取出一個包含所有行的數組
fetchColomn:返回結果集中某一列的資料
getAttribute:返回一個PDOStatement屬性
getColomnMeta:返回結果集中某一列的結構
nextRowset:返回下一個結果集
rowCount:返回SQL語句執行後影響的行數
setAttribute:設定一個PDOStatement屬性
setFetchMode:為PDOStatement設定擷取資料
給一個交易處理的簡單例子:
複製代碼 代碼如下:
<?php
/*
交易處理
MYSQL 表引擎 MyISAM InnoDB
添加欄位 alter table user add money int not null default 0;
查看錶引擎 show create table user
修改表引擎 alter table user engine=InnoDB
*/
try{
//執行個體化PDO
$pdo=new PDO("mysql:host=localhost;dbname=photo","root","123456"。array('3'=>'2'));
}catch(PDOException $e){
echo $e->getMessage();
}
//設定字元集
$sql="set name utf8";
$pdo->exec($sql);
//開啟交易處理
$pdo->beginTransaction();
$num=250;
$sql="update user set money=money-{$num} where id =1";
$rows=$pdo->exec($sql);
$sql="update user set monet=money-{$num} where id=2";
$rows+=$pdo->exec($sql);
//結束交易處理
if($rows==2){
$pdo->commit();
}else{
$pdo->rollBack();
}
?>
(事務的主要特性:原子性、一致性、獨立性和持久性)
4、PDO最大的特點是引入了參數綁定和先行編譯
先行編譯負責兩件事,轉移和軟解析提速。程式要支援先行編譯,除了資料庫支援外,還需要驅動支援(PDO和NySQLi支援)
5、PDO的效率問題
(1)在一個大表大資料量中進行測試,PDO的CRUD效率比MySql直連低5%~15%,並且方差大於MySQL直連
(2)至於負載方面,PDO開啟長串連後負載高於MySQL且比較穩定。
其實在實際應用中,90%的程式是不會進行資料庫遷移的,有資料庫遷移的應用程式少之又少。
http://www.bkjia.com/PHPjc/946747.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/946747.htmlTechArticle對PHP PDO的一些認識小結,phppdo小結 1、PDO (PHP Data Object)擴充為PHP定義了一個訪問資料庫的輕量、持久的介面。實現PDO介面的每一種資料庫...