温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

PDO中安全处理与事物处理的示例分析

发布时间:2021-09-16 14:53:56 来源:亿速云 阅读:178 作者:柒染 栏目:开发技术

今天就跟大家聊聊有关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