標籤:inf roo 指標 執行個體 row root cti 抽象類別 開啟
一、PDO的定義
1.pdo(php data object)是一個資料庫的抽象層
二、PDO的特點
1.跨資料庫
2.支援預先處理
3.支援交易處理
三、PDO的使用
1.基本使用
(1)執行個體化pdo
①資料庫類型必須小寫
②格式:$pdo=new PDO(‘mysql(可替換):host=localhost;dbname=資料庫名;charset=utf8‘,‘root‘,‘密碼‘);
(2)發送sql指令
$pdo->query(sql查詢語句) 返回的是對象
$pdo->exec(sql增、刪、改語句) 返回的是手影響行數
(3)$pdo->errorInfo() 錯誤資訊
$pdo->lastInsertId()
2.處理返回對象的方法
(1)fetch()返回結果集的下一行,結果指標下移到頭返回false
(2)fetchAll(PDO::FETCH_NUM)返回全部(索引式) PDO::FETCH_ASSOC關聯式 PDO::FETCH_BOTH索引式和關聯式
(3)foreach遍曆
3.預先處理
(1)執行個體化對象
(2)發送預先處理指令
$stmt=$pdo->prepare(sql語句,變數部分使用預留位置);
? :name 預留位置
(3)綁定參數
① ?作為預留位置 bindValue(序號,值);
② :name作為預留位置 bindValue(預留位置,變數);
③ :name作為預留位置 $arr=array(‘預留位置‘=>‘值‘);
(4)執行
$stmt->execute($arr);
(5)處理結果
① 結果集foreach fetch fetchAll
② 受影響行數 rowCount();
1 //使用資料庫抽象層進行預先處理操作 2 3 //1. 執行個體化 4 $pdo = new PDO(‘mysql:host=localhost;dbname=lamp183;charset=utf8‘,‘root‘,‘‘); 5 6 //2. 發送預先處理指令 7 8 //增加 9 $stmt = $pdo->prepare(‘insert into user (username,password) values (:name,:pass)‘);10 11 //3. 給預先處理指令綁定相應的值12 //第一種綁定方式13 // $stmt->bindValue(1,‘qiaojing‘);14 // $stmt->bindValue(2,‘qiaojing‘);15 16 //第二種綁定方式17 // $uname = ‘鴻澤‘;18 // $upass = ‘鴻澤‘;19 // $stmt->bindParam(‘:name‘,$uname);20 // $stmt->bindParam(‘:pass‘,$upass);21 22 //第三種綁定方式23 $arr = array(24 ‘:name‘=>‘召勇‘,25 ‘:pass‘=>‘召勇‘26 );27 28 //4. 執行29 $stmt->execute($arr);30 31 //5. 處理結果32 if($stmt->rowCount()>0){33 $id = $pdo->lastInsertId();34 echo ‘添加成功!ID號為:‘.$id;35 }else{36 echo ‘添加失敗!‘;37 }38 // echo $stmt->rowCount();
4.交易處理
(1)表的類型必須是innodb
show create table user;
alter table user engine=innodb;
(2)$pdo->beginTransAction(); 開啟
$pdo->rollBack(); 復原
$pdo->commit(); 事務結束
1 //使用PDO抽象類別,實現交易處理 2 //1.執行個體化 3 $pdo = new PDO(‘mysql:host=localhost;dbname=lamp183;charset=utf8;‘,‘root‘,‘‘); 4 5 //2.發送語句 6 //(1)開啟交易處理 7 $pdo->beginTransaction(); 8 9 //(2)修改我自己的資料10 $num1 = $pdo->exec(‘update user set acount = acount - 100000 where id = 1‘);11 12 //判斷我的修改語句是否有問題13 if(!$num1){14 $pdo->rollBack(); //如果事務出現問題,則滾回去15 die(‘交易失敗,請查詢後再轉錢!‘);16 }17 18 //(3)修改別人的資料19 $num2 = $pdo->exec(‘update user set acount = acount + 100000 where id = 2‘);20 21 //判斷別人的修改語句是否有問題22 if(!$num2){23 $pdo->rollBack();24 die(‘交易失敗!轉錢的過程當中遇到了問題!‘);25 }26 27 //3.處理結果28 if($num1 && $num2){29 echo ‘恭喜,交易成功!‘;30 }31 32 //(4)結束33 $pdo->commit();
【php】PDO