中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PDO中安全處理與事物處理的示例分析

發布時間:2021-09-16 14:53:56 來源:億速云 閱讀:152 作者:柒染 欄目:開發技術

今天就跟大家聊聊有關PDO中安全處理與事物處理的示例分析,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

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

事務處理具有四個特性:原子性、一致性、獨立性、持久性。并不是所有的數據庫都支持事務處理的,PDO 為能夠執行事務處理的數據庫提供事務支持。

一.PDO異常處理
PDO::ATTR_ERRMODE

1) PDO::ATTR_ERRMODE//不報錯誤(忽略)(0)

2) PDO::ERRMODE_WARNING
//以警告的方式報錯(1)

3) PDO::ERRMODE_EXCEPTION  //以異常的方式報錯(2)

<?php 
//默認是PDO::ATTR_ERRMODE 不報錯誤(忽略)(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預處理方法

1) prepare()    //用于執行查詢SQL語句,返回PDOStatement對象

2) bindValue()  //將值綁定到對應的一個參數,返回布爾值

3) bindParam()  //將參數綁定到相應的查詢占位符上,返回布爾值

4) bindColumn() //用來匹配列名和一個指定的變量名

5) execute()    // 執行一個準備好了的預處理語句,返回布爾值

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

<?php 
/** 
 * ?號式的預處理語句,共有三種綁定方式 
 */ 
 
//1.連接數據庫 
try{ 
  $pdo=new PDO("mysql:host=localhost;dbname=myapp","root",""); 
}catch (PDOException $e){ 
  die("fail to connect db".$e->getMessage()); 
} 
 
//2.預處理的SQL語句 
$sql="INSERT INTO users(id,name,age) VALUES(?,?,?)"; 
$stmt=$pdo->prepare($sql); 
 
//3.對?號的參數進行綁定 
$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.執行 
//$stmt->execute(); 
//第三種綁定方式:直接執行數組 
$stmt->execute(array($id,$name,$age)); 
echo $stmt->rowCount();
<?php 
/** 
 * 別名式的預處理語句,共有三種綁定方式 
 */ 
 
//1.連接數據庫 
try{ 
  $pdo=new PDO("mysql:host=localhost;dbname=myapp","root",""); 
}catch (PDOException $e){ 
  die("fail to connect db".$e->getMessage()); 
} 
 
//2.預處理的SQL語句 
$sql="INSERT INTO users(id,name,age) VALUES(:id,:name,:age)"; 
$stmt=$pdo->prepare($sql); 
 
//3.參數進行綁定 
$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.執行 
//$stmt->execute(); 
//第三種綁定方式:直接執行數組 
$stmt->execute(array("id"=>$id,"name"=>$name,"age"=>$age)); 
echo $stmt->rowCount();
<?php 
/** 
 * 用預處理方式查詢數據 
 */ 
//1.連接數據庫 
try{ 
  $pdo=new PDO("mysql:host=localhost;dbname=myapp","root",""); 
}catch (PDOException $e){ 
  die("fail to connect mysql".$e->getMessage()); 
} 
 
//2.預處理查詢 
$sql="SELECT id,name,age FROM users"; 
$stmt=$pdo->prepare($sql); 
//3.執行 
$stmt->execute(); 
foreach($stmt as $val){ 
  echo $val['id']."------".$val['name']."------".$val['age']."<br/>"; 
}

三.事務處理操作方法介紹
1) beginTransaction()     //開啟一個事物(做一個回滾點)

2) commit() 
   //提交事務

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

<?php 
//1.連接數據庫 
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.執行數據操作 
try{ 
  //開啟事物 
  $pdo->beginTransaction(); 
  $sql="insert into users(id,name,age) VALUES(?,?,?)"; 
  $stmt=$pdo->prepare($sql); 
  //傳入參數 
  $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(); 
}

看完上述內容,你們對PDO中安全處理與事物處理的示例分析有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

pdo
AI

建水县| 祁连县| 璧山县| 大安市| 乌苏市| 台北市| 黄大仙区| 瓮安县| 永修县| 尤溪县| 莫力| 繁峙县| 乃东县| 南通市| 夏邑县| 柘荣县| 镇康县| 承德市| 海林市| 红河县| 北辰区| 即墨市| 冕宁县| 海阳市| 台前县| 台江县| 罗平县| 丘北县| 宜君县| 盐源县| 蒙阴县| 宁乡县| 仪征市| 九龙城区| 乌兰县| 都匀市| 新营市| 邵阳县| 襄垣县| 康定县| 阿拉善左旗|