pdo安全處理與事務處理
1. pdo異常處理
pdo異常處理介紹:
舉例:
<?php
// 預設不提示錯誤資訊,需要用errorcode(), errorinfo()
trycatch (pdoexception $e)
$sql = "insert into users(name, age) values ('xy', 11)";
$res = $pdo->exec($sql);
if($res)else
設定錯誤報警:
<?php
// 預設不提示錯誤資訊,需要用errorcode(), errorinfo()
trycatch (pdoexception $e)
$sql = "insert into users(name, age) values ('xy', 11)";
$res = $pdo->exec($sql);
if($res)else{}
設定異常資訊模式:
<?php
// 預設不提示錯誤資訊,需要用errorcode(), errorinfo()
trycatch (pdoexception $e)
$sql = "insert into users(name, age) values ('xy', 11)";
trycatch (pdoexception $e)
2. pdo預處理
pdo預處理方法:
繫結方法:
?式的繫結方法:
<?php
/* * ?式的預處理語句,共有三種繫結方式
*///1.連線資料庫
trycatch (pdoexception $e)
//print_r($pdo);
//2. 預處理的sql語句
$sql = "insert into users(id, name, age) values (?,?,?)";
//執行預處理語句
$stmt = $pdo->prepare($sql);
//3. 引數繫結的三種方法
// i;(?式的繫結方式)
$stmt->bindvalue(1, null);
$stmt->bindvalue(2,'xyz');
$stmt->bindvalue(3, 33);
// ii;(變數繫結方式)
$stmt->bindparam(1,$id);
$stmt->bindparam(2,$name);
$stmt->bindparam(3,$age);
$id = null;
$name = '***';
$age = 24;
// iii: 陣列方式繫結
$stmt->execute(array(null, 'zzz', 22));
//4. 執行
$stmt->execute();
echo $stmt->rowcount();
別名的預處理方式:
<?php
/* * 別名式的預處理語句,共有三種繫結方式
*///1.連線資料庫
trycatch (pdoexception $e)
//print_r($pdo);
//2. 預處理的sql語句
$sql = "insert into users(id, name, age) values (:id,:name,:age)";
//執行預處理語句
$stmt = $pdo->prepare($sql);
//3. 引數繫結的三種方法
// i;(?式的繫結方式)
$stmt->bindvalue("id", null);
$stmt->bindvalue("name",'xxyz');
$stmt->bindvalue("age", 33);
//4. 執行
$stmt->execute();
// ii;(變數繫結方式)
$stmt->bindparam("id",$id);
$stmt->bindparam("name",$name);
$stmt->bindparam("age",$age);
$id = null;
$name = '***s';
$age = 24;
//4. 執行
$stmt->execute();
// iii: 陣列方式繫結
//$stmt->execute(array(null, 'zzzz', 22));
$stmt->execute(array("id"=>null, "name"=>'zzzz',"age"=> 22));
echo $stmt->rowcount();
預處理的查詢:
<?php
/* * 採用預處理sql執行查詢,並採用繫結結果方式輸出
*///1.連線資料庫
trycatch (pdoexception $e)
//print_r($pdo);
//2. 預處理的sql語句
$sql = "select id,name,age from users ";
//執行預處理語句
$stmt = $pdo->prepare($sql);
//3. 執行
$stmt->execute();
//$stmt->bindcolumn(1, $id);
$stmt->bindcolumn(2, $name);
$stmt->bindcolumn("age", $age);
while($val=$stmt->fetch(pdo::fetch_column))::";}
//foreach($stmt as $val)
3. pdo事務處理
資料表需要innodb型別
事務處理操作方法:
<?php
// 採用預處理+事務處理執行sql操作
//1.連線資料庫
trycatch (pdoexception $e)
print_r($pdo);
//執行資料操作
trycatch (pdoexception $e){
die("fail to exec".$e->getmessage());
$pdo->rollback();
PDO事務處理
並不是所有的資料庫都支援事務處理的,pdo 為能夠執行事務處理的資料庫提供事務支援。配置事務處理需注意 pdo setattribute pdo attr autocommit,false 開啟乙個事務需要的方法 pdo begintransaction 開啟乙個事務 pdo commit 提交事務...
PDO事務處理
pdo事務處理 2014 9 3 10 44 19 by jiancaigege 概要 將多條sql操作 增刪改 作為乙個操作單元,要麼都成功,要麼都失敗。單條資料不用事務處理 被操作的表必須是innodb型別的表 支援事務 mysql常用的表型別 myisam 非事務 增刪改速度快 innodb ...
PDO事務處理
pdo事務處理 2014 9 3 10 44 19 by jiancaigege 概要 將多條sql操作 增刪改 作為乙個操作單元,要麼都成功,要麼都失敗。單條資料不用事務處理 被操作的表必須是innodb型別的表 支援事務 mysql常用的表型別 myisam 非事務 增刪改速度快 innodb ...