最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PDO的安全處理與事物處理方法

 更新時(shí)間:2016年10月31日 08:56:30   作者:bboyjoe  
本篇文章主要介紹了PDO的安全處理與事物處理方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。

事務(wù) (Transaction) 是操作數(shù)據(jù)庫(kù)中很重要的一個(gè)功能, 它可以讓你預(yù)定一條, 或者一系列 SQL 語(yǔ)句, 然后一起執(zhí)行,并且在執(zhí)行的過(guò)程中, 如果其中的某條執(zhí)行失敗, 可以回滾所有已更改的操作. 如果執(zhí)行成功, 那么這一系列操作都會(huì)永久有效. 事務(wù)很好的解決了在操作數(shù)據(jù)庫(kù)的時(shí)候不同步的問(wèn)題. 同時(shí), 通過(guò)事務(wù)去執(zhí)行大數(shù)據(jù)量的時(shí)候, 執(zhí)行效率可以提高很多很多.

事務(wù)處理具有四個(gè)特性:原子性、一致性、獨(dú)立性、持久性。并不是所有的數(shù)據(jù)庫(kù)都支持事務(wù)處理的,PDO 為能夠執(zhí)行事務(wù)處理的數(shù)據(jù)庫(kù)提供事務(wù)支持。

一.PDO異常處理
PDO::ATTR_ERRMODE

1) PDO::ATTR_ERRMODE//不報(bào)錯(cuò)誤(忽略)(0)

2) PDO::ERRMODE_WARNING
//以警告的方式報(bào)錯(cuò)(1)

3) PDO::ERRMODE_EXCEPTION  //以異常的方式報(bào)錯(cuò)(2)

<?php 
//默認(rèn)是PDO::ATTR_ERRMODE 不報(bào)錯(cuò)誤(忽略)(0),需要用errorCode()、errorInfo() 
try{ 
  $pdo=new PDO("mysql:host=localhost;dbname=myapp","root",""); 
//  $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING); 
  $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 
}catch (PDOException $e){ 
  die("fail to connect db".$e->getMessage()); 
} 
$sql="INSERT INTO user VALUES(null,'dabao','26')"; 
try{ 
  $res=$pdo->exec($sql); 
}catch (PDOException $e){ 
  echo $e->getMessage(); 
} 
//$res=$pdo->exec($sql); 
//if($res){ 
//  echo 'OK'; 
//}else{ 
//  echo $pdo->errorCode(); 
//  echo '<br/>'; 
//  print_r($pdo->errorInfo()); 
//} 

二.PDO預(yù)處理方法

1) prepare()    //用于執(zhí)行查詢(xún)SQL語(yǔ)句,返回PDOStatement對(duì)象

2) bindValue()  //將值綁定到對(duì)應(yīng)的一個(gè)參數(shù),返回布爾值

3) bindParam()  //將參數(shù)綁定到相應(yīng)的查詢(xún)占位符上,返回布爾值

4) bindColumn() //用來(lái)匹配列名和一個(gè)指定的變量名

5) execute()    // 執(zhí)行一個(gè)準(zhǔn)備好了的預(yù)處理語(yǔ)句,返回布爾值

6) rowCount() // 返回使用增、刪、改、查操作語(yǔ)句后受影響的行總數(shù)

<?php 
/** 
 * ?號(hào)式的預(yù)處理語(yǔ)句,共有三種綁定方式 
 */ 
 
//1.連接數(shù)據(jù)庫(kù) 
try{ 
  $pdo=new PDO("mysql:host=localhost;dbname=myapp","root",""); 
}catch (PDOException $e){ 
  die("fail to connect db".$e->getMessage()); 
} 
 
//2.預(yù)處理的SQL語(yǔ)句 
$sql="INSERT INTO users(id,name,age) VALUES(?,?,?)"; 
$stmt=$pdo->prepare($sql); 
 
//3.對(duì)?號(hào)的參數(shù)進(jìn)行綁定 
$id=null; 
$name="test103"; 
$age=103; 
 
//第一種綁定方式 
//$stmt->bindValue(1,$id); 
//$stmt->bindValue(2,$name); 
//$stmt->bindValue(3,$age); 
 
//第二種綁定方式 
//$stmt->bindParam(1,$id); 
//$stmt->bindParam(2,$name); 
//$stmt->bindParam(3,$age); 
 
//4.執(zhí)行 
//$stmt->execute(); 
//第三種綁定方式:直接執(zhí)行數(shù)組 
$stmt->execute(array($id,$name,$age)); 
echo $stmt->rowCount(); 
<?php 
/** 
 * 別名式的預(yù)處理語(yǔ)句,共有三種綁定方式 
 */ 
 
//1.連接數(shù)據(jù)庫(kù) 
try{ 
  $pdo=new PDO("mysql:host=localhost;dbname=myapp","root",""); 
}catch (PDOException $e){ 
  die("fail to connect db".$e->getMessage()); 
} 
 
//2.預(yù)處理的SQL語(yǔ)句 
$sql="INSERT INTO users(id,name,age) VALUES(:id,:name,:age)"; 
$stmt=$pdo->prepare($sql); 
 
//3.參數(shù)進(jìn)行綁定 
$id=null; 
$name="test203"; 
$age=23; 
 
//第一種綁定方式 
//$stmt->bindValue("id",$id); 
//$stmt->bindValue("name",$name); 
//$stmt->bindValue("age",$age); 
 
//第二種綁定方式 
//$stmt->bindParam("id",$id); 
//$stmt->bindParam("name",$name); 
//$stmt->bindParam("age",$age); 
 
//4.執(zhí)行 
//$stmt->execute(); 
//第三種綁定方式:直接執(zhí)行數(shù)組 
$stmt->execute(array("id"=>$id,"name"=>$name,"age"=>$age)); 
echo $stmt->rowCount(); 

<?php 
/** 
 * 用預(yù)處理方式查詢(xún)數(shù)據(jù) 
 */ 
//1.連接數(shù)據(jù)庫(kù) 
try{ 
  $pdo=new PDO("mysql:host=localhost;dbname=myapp","root",""); 
}catch (PDOException $e){ 
  die("fail to connect mysql".$e->getMessage()); 
} 
 
//2.預(yù)處理查詢(xún) 
$sql="SELECT id,name,age FROM users"; 
$stmt=$pdo->prepare($sql); 
//3.執(zhí)行 
$stmt->execute(); 
foreach($stmt as $val){ 
  echo $val['id']."------".$val['name']."------".$val['age']."<br/>"; 
} 

三.事務(wù)處理操作方法介紹
1) beginTransaction()     //開(kāi)啟一個(gè)事物(做一個(gè)回滾點(diǎn))

2) commit() 
   //提交事務(wù)

3) rollBack()            //事務(wù)回滾操作

<?php 
//1.連接數(shù)據(jù)庫(kù) 
try{ 
  $pdo=new PDO("mysql:host=localhost;dbname=myapp","root",""); 
  $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 
}catch (PDOException $e){ 
  die("fail to connect db".$e->getMessage()); 
} 
//2.執(zhí)行數(shù)據(jù)操作 
try{ 
  //開(kāi)啟事物 
  $pdo->beginTransaction(); 
  $sql="insert into users(id,name,age) VALUES(?,?,?)"; 
  $stmt=$pdo->prepare($sql); 
  //傳入?yún)?shù) 
  $stmt->execute(array(null,"test1","21")); 
  $stmt->execute(array(null,"test2","22")); 
  $stmt->execute(array(null,"test3","23")); 
  //提交事物 
  $pdo->commit(); 
}catch (PDOException $e){ 
  die("fail to execute".$e->getMessage()); 
  //事物回滾 
  $pdo->roolback(); 
} 

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

手机| 新郑市| 阿坝县| 东宁县| 宜黄县| 大埔县| 且末县| 河北区| 彰化市| 宽城| 马关县| 营口市| 竹北市| 普洱| 镇远县| 淳安县| 仲巴县| 大竹县| 汉川市| 西平县| 寿阳县| 铜梁县| 连平县| 大名县| 广丰县| 库尔勒市| 洪湖市| 文化| 于田县| 岳西县| 揭东县| 达州市| 邻水| 嘉义市| 屏山县| 江安县| 靖边县| 大连市| 无锡市| 颍上县| 呼伦贝尔市|