PDO安全事務處理

2021-07-04 10:44:45 字數 3340 閱讀 9151

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 ...