本篇文章介紹的內容是PDO用法詳細解析,現在分享給大家。有需要的朋友可以參考一下
《PDO》41、作用 :能夠解決使用者在需要使用不同的資料庫的時候進行來回的切換,PDO能夠自動的進行資料庫的切換。42、使用PDO a)Php.ini檔案找開啟PDO擴充43、使用PDO操作資料庫基本步驟 a)串連認證 i.$pdo = new PDO(“mysql:host=localhost;port=3306;dbname=project”,”root”,”root”); ii.dbname 是進入的資料庫 b)組織SQL語句 i.$sql = “show tables”; c)發送SQL語句,接收執行結果 i.$stmt = $pdo->query( $sql ); d)從結果集中擷取資料 i.$stmt->fetch();44、PDO常用函數 a)stdClass標準類 空類 b)PDO: i.exec( $sql );執行SQL語句,返回受影響的行數(用於 增刪改) ii.$stmt = query( $sql );執行SQL語句,返回PDOStatement對象(用於 查) c)PDOStatement(結果集) i.$stmt->fetch( );返回一個關聯陣列+索引數組的集合 1.參1PDO::FETCH_ASSOC只返回關聯陣列 2.參2PDO::FETCH_NUM只返回索引數組 ii.$stmt->fetchAll()擷取結果集所有內容(參數同fetch()) iii.返回一個對象Object 1.class Persion{} 2.$stmt->fetchObject( Persion) iv.bindColumn 和 fetch綁定一列到一個變數 1.$stmt->bindColumn(‘s_name’,$name); 2.$stmt->bindColumn( 3 ,$number); //注意:索引從1開始 3.$stmt->fetch( ); 4.echo $name,$number d)PDO預先處理 i.:s_name 這些 可以全用 ? 號代替(綁定資料時 就用索引值); ii.使用數組指定預先處理變數 1.步驟: a)$sql = “insert into pro_student values(null,:s_name,:s_num,:s_gender,:s_age,:c_id)”;//sql b)$stmt = $pdo->prepare( $sql );//發送預先處理 c)給預先處理綁定資料 i.$arr = array( ii. ‘:s_name’=>’房祖名’, iii. ‘:s_num’=>’itcast0001’, iv. ‘:s_gender’=>’男’, v. ‘:s_age’=>’28’, vi. ‘:c_id’=>’2’, vii.) d)$stmt->execute( $arr );//執行預先處理 iii.通過綁定變數的形式 1.步驟 a)$sql = “insert into pro_student values(null,:s_name,:s_num,:s_gender,:s_age,:c_id)”;//sql b)$stmt = $pdo->prepare( $sql );//發送預先處理 c)給預先處理綁定資料 i.$name = “李莫愁”; ii.$num= “itcast0002”; iii.$gender = “女”; iv.$age = “30”; v.$c_id = “3”; vi.//將變數綁定給預先處理 vii.$stmt->bindParam(‘:s_name’,$name); viii.$stmt->bindParam(‘:s_num’,$num); ix.$stmt->bindParam(‘:s_gender’,$gender); x.$stmt->bindParam(‘:s_age’,$age); xi.$stmt->bindParam(‘:c_id’,$c_id); d)$stmt->execute( );//執行預先處理 e)PDO交易處理 i.交易處理就是 增刪改 ii.注意:資料表的儲存引擎必須是 innoDB iii.交易處理流程 1.$pdo = new PDO(‘mysql:host=localhost;port=3306;dbname=project’,’root’,’root’);//串連認證 2.$res = $pdo->beginTransaction();//開啟事務 3.交易處理 a)$sql = “updata pro_student set s_age=28 where s_id=20”; b)$lines = $pdo->exec( $sql );//返回受影響的行數 c)$sql = “select * from pro_student where s_id=20”; d)$stmt = $pdo->query( $sql ); e)$stmt->fetch(PDO::FETCH_ASSOC); 4.提交事務 a)if( $links ){ b) $pdo->commit();//更新成功 c)}else{ d) $pdo->rollBack();//更新失敗 復原資料 e)} f)PDO 屬性設定 i.設定PDO在處理資料的過程中採用什麼方式去處理 ii.PDO::getAttribute();//擷取屬性 iii.PDO::setAttribute();//設定屬性 iv.樣本: 1.$pdo = new PD(‘mysql:host=localhost;port=3306;dbname=project’,’root’,’root’);//串連認證 2.$peo->getAttrbute(PDO::ATTR_AUTOCOMMIT);//擷取 自動認可屬性 3.$pdo->setAttrbute(PDO::ATTR_AUTOCOMMIT,0)//設定 關閉自動認可 v.參數記憶: 1.PDO::ATTR_CASE強制列名為指定的大小寫 a)PDO::CASE_LOWER強制小寫b)PDO::CASE_UPPER強制大寫vi...... 更多請參考手冊 ...... g)PDO異常處理i.try{ii. //設定錯誤處理模式(必須設定才會生效)iii. $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);iv. //一旦出錯立即進入catch語句v.}catch(PDOException $e){vi. $e->getTrace(); //擷取完整的錯誤資料vii. $e->getFile(); //擷取錯誤檔案viii. $e->getLine(); //擷取錯誤行號ix. $e->getMessage(); //擷取錯誤原因x.} h)反射:i.反射就是將其他類的結構給反應出來,從而可以對類的結構進行瞭解便於對類的使用ii.Reflectioniii.reflectionClass::export(要反射的類名)iv.調用reflectionClass的靜態方法v.var_dump( reflectionClass::export(‘PDO’) );vivii.$rc = new ReflectionClass(‘PDO’); //建立ReflectionClass對象viii.var_dump( $rc->getProperties() ); //擷取全部屬性ix.var_dump( $rc->getMothods() ); //擷取全部方法x.var_dump( $rc->getConstants() ); //擷取全部常量