PDO--------(PHP Data Object)

PDO是php工程師爲了彌補mysqli不能操作其他數據庫開發出來的一個可以操作所有數據源(Dsn)的數據庫擴展類。

php學習之路:LAMP(LNMP,LNSP)--即:linux,apache,mysql,php

PDO有三大主要類:Pdo類(主要用於pdo調優);PdoStatement類(主要用於處理數據操作,包括預處理和結果集);PdoException類(主要用於處理PDO異常)

pdo類:

     $pdo -> setAttribute( PDO::ATTR_AUTOCOMMIT , false );

//setAttribute設置調優常量

pdo的getAttribute獲取調優常量//注意下在操作中要作爲一個類的屬性即PDO::XXX

PDO_ATTR_AUTOCOMMIT //獲取自動連接

PDO_ATTR_CASE //強制列名爲指定的大小寫

PDO_ATTR_CLIENT_VERSION //當前客戶端的版本

PDO_ATTR_CONNECTION_STATUS //

PDO_ATTR_DRIVER_NAME //

PDO_ATTR_ERRMODE //

PDO_ATTR_ORACLE_NULLS //

PDO_ATTR_PERSISTENT //當前是否持久鏈接

PDO_ATTR_PREFETCH //

PDO_ATTR_SERVER_INFO //當前服務器信息

PDO_ATTR_SERVER_VERSION //當前服務器的版本

PDO_ATTR_TIMEOUT //

//不做過多意解,詳細可參考php.net查看

echo "當前是否持久鏈接:".$pdo -> getAttribute( PDO::ATTR_PERSISTENT )."<br />";



PDOStatement類

幫我們準一個語句和在PDO中對象的exec()以及query()相比

優點: 執行效率高

安全性更高

幫我們處理結果集

是推薦使用

//$sql = "delete from news where id in(35,36,37)";

$sql = "update news set name='vvv where id in(38,39)";

$rows = $pdo -> exec( $sql );

echo "---affected rows {$rows} ";



$pdo -> exec( "SET NAMES UTF8" );//設置字符,防止插入或者更新出現亂碼


關於類的預處理技術:

$sql = "insert into user(id,name,sex)values(?,?,?)";

$ptmt = $pdo -> prepare( $sql ); //把語句放到mysql數據裏面記性存儲。預處理


$ptmt -> bindParam(1,$id,PDO::PARAM_STR);

$ptmt -> bindParam(2,$name,PDO::PARAM_STR);

$ptmt -> bindParam(3,$sex,PDO::PARAM_STR);

$ptmt->execute();

類的別名技術:

$sql = "insert into news(title,contents,addTime)values(:title,:contents,:date)";

$ptmt = $pdo -> prepare( $sql ); //把語句放到mysql數據裏面記性存儲。預處理

$ptmt->execute( array( ":title"=>"簡化名子{$i}",":contents"=>"名子{$i}",":date"=>date("Y-m-d H:i:s") ) );


關於pdo的異常處理機制,無需自己太多定義,可以直接繼承原有的,

通過throw拋出,catch捕抓即可



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章