PDO是php工程師爲了彌補mysqli不能操作其他數據庫開發出來的一個可以操作所有數據源(Dsn)的數據庫擴展類。
$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捕抓即可