加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PDO的安全处理与事物处理方法

发布时间:2020-12-12 21:49:13 所属栏目:PHP教程 来源:网络整理
导读:事务 (Transaction) 是操作数据库中很重要的一个功能,它可以让你预定一条,或者一系列 SQL 语句,然后一起执行,并且在执行的过程中,如果其中的某条执行失败,可以回滚所有已更改的操作. 如果执行成功,那么这一系列操作都会永久有效. 事务很好的解决了在操作数

事务 (Transaction) 是操作数据库中很重要的一个功能,它可以让你预定一条,或者一系列 SQL 语句,然后一起执行,并且在执行的过程中,如果其中的某条执行失败,可以回滚所有已更改的操作. 如果执行成功,那么这一系列操作都会永久有效. 事务很好的解决了在操作数据库的时候不同步的问题. 同时,通过事务去执行大数据量的时候,执行效率可以提高很多很多.

事务处理具有四个特性:原子性、一致性、独立性、持久性。并不是所有的数据库都支持事务处理的,PDO 为能够执行事务处理的数据库提供事务支持。

一.PDO异常处理

PDO::ATTR_ERRMODE

1) PDO::ATTR_ERRMODE//不报错误(忽略)(0)

2) PDO::ERRMODE_WARNING //以警告的方式报错(1)

3) PDO::ERRMODE_EXCEPTION //以异常的方式报错(2)

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 '
'; // print_r($pdo->errorInfo()); //}

二.PDO预处理方法

1) prepare() //用于执行查询SQL语句,返回PDOStatement对象

2) bindValue() //将值绑定到对应的一个参数,返回布尔值

3) bindParam() //将参数绑定到相应的查询占位符上,返回布尔值

4) bindColumn() //用来匹配列名和一个指定的变量名

5) execute() // 执行一个准备好了的预处理语句,返回布尔值

6) rowCount() // 返回使用增、删、改、查操作语句后受影响的行总数

//1.连接数据库
try{
$pdo=new PDO("mysql:host=localhost;dbname=myapp","");
}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();

//1.连接数据库
try{
$pdo=new PDO("mysql:host=localhost;dbname=myapp",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();

getMessage()); }

//2.预处理查询
$sql="SELECT id,age FROM users";
$stmt=$pdo->prepare($sql);
//3.执行
$stmt->execute();
foreach($stmt as $val){
echo $val['id']."------".$val['name']."------".$val['age']."
";
}

三.事务处理操作方法介绍

1) beginTransaction() //开启一个事物(做一个回滚点)

2) commit() //提交事务

3) rollBack() //事务回滚操作

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,?)"; $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(); }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读