php安装教程详解 php防sql注入函数( 二 )


事务能力关于事务想必大家也都有一定的了解 , 所以在这里也不介绍具体的概念了 , 我们只看看在 PDO 中事务是如何实现的 。首先 , 我们先看下在没有事务的情况下会发生什么 。
$pdo->exec("insertintotran_innodb(name,age)values('Joe',12)");//成功插入$pdo->exec("insertintotran_innodb2(name,age)values('Joe',12)");//报错停止整个PHP脚本执行//Fatalerror:UncaughtPDOException:SQLSTATE[42S02]:Basetableorviewnotfound:1146Table'blog_test.tran_innodb2'doesn'texist假设这两个表需要同时更新 , 但第二条语句报错了 。在没有事务的情况下 , 我们第一条数据是会正常插入成功的 , 这并不是我们需要的结果 。在这时 , 就需要事务能力的帮助 , 让我们能够让两个表要么同时成功 , 要么同时失败 。
try{//开始事务$pdo->beginTransaction();$pdo->exec("insertintotran_innodb(name,age)values('Joe',12)");$pdo->exec("insertintotran_innodb2(name,age)values('Joe',12)");//不存在的表//提交事务$pdo->commit();}catch(Exception$e){//回滚事务$pdo->rollBack();//输出报错信息echo"Failed:".$e->getMessage(),PHP_EOL;//Failed:SQLSTATE[42S02]:Basetableorviewnotfound:1146Table'blog_test.tran_innodb2'doesn'texist}首先就是 beginTransaction() 方法 , 它是用来关闭数据库的自动提交 , 并启动一个事务 , 在这个方法之后 , 只有遇到 commit() 或者 rollBack() 方法后才会关闭这个事务 。
commit() 方法就是操作过程中没有出现意外的话 , 就将在 beginTransaction() 之后的所有数据操作一起打包提交 。
rollBack() 是回滚数据 , 当 beginTransaction() 之后的某一条语句或者代码出现问题时 , 回滚之前的数据操作 , 保证 beginTransaction() 之后的所有语句要么都成功 , 要么都失败 。
就是这样三个简单的函数 , 就为我们完成了整个事务操作 。关于事务的深入学习我们会在将来深入地研究 MySQL 时再进行探讨 。在这里我们需要注意的是 , PDO 对象最好指定错误模式为抛出异常 , 如果不指定错误模式的话 , 事务中出现的错误也不会直接报错 , 而是返回错误码 , 我们需要通过错误码来确定是否提交或回滚 。这样远没有异常机制来的简洁直观 。
总结我们简单的梳理并学习了一下 PDO 中的预处理和事务相关的知识 , 接下来就要进入 PDOStatement 对象相关内容的学习 。PDOStatement 对象就是 PDO 的预处理对象 , 也就是在日常开发中我们会接触到的最多的数据操作对象 。这块可是重点内容 , 大家可不能松懈了哦!


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: