一.PDO異常處理
PDO::ATTR_ERRMODE
-
- PDO::ATTR_ERRMODE//不報錯誤(忽略)(0)
-
- PDO::ERRMODE_WARNING //以警告的方式報錯(1)
-
- PDO::ERRMODE_EXCEPTION //以異常的方式報錯(2)
<?php
try {
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', 'root');
// 設置以異常的方式返回錯誤
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die('數據庫鏈接失敗' . $e->getMessage());
}
二.PDO預處理方法
-
- prepare() //用於執行查詢SQL語句,返回PDOStatement對象
-
- bindValue() //將值綁定到對應的一個參數,返回布爾值
-
- bindParam() //將參數綁定到相應的查詢佔位符上,返回布爾值
-
- bindColumn() //用來匹配列名和一個指定的變量名
-
- execute() // 執行一個準備好了的預處理語句,返回布爾值
-
- rowCount() // 回使用增、刪、改、查操做語句後受影響的行總數
$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();
//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();
//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/>";
}
三.事務處理操做方法介紹
-
- beginTransaction() //開啓一個事物(作一個回滾點)
-
- commit() //提交事務
-
- rollBack() //事務回滾操做
//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();
}