• 技术文章 >后端开发 >PHP问题

    php事务删除怎么操作

    藏色散人藏色散人2022-11-22 09:19:29原创122

    php事务删除的操作方法:1、利用“autocommit(false)”方法,关闭数据库自动提交;2、当操作语句全部成功后,通过“commit()”提交到数据库,如果操作失败,则用“rollback()”方法回退删除即可。

    php入门到就业线上直播课:进入学习

    本教程操作环境:Windows7系统、PHP8.1版、Dell G3电脑。

    php事务删除怎么实现?

    php 事务处理transaction

    MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!

    在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务

    事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行

    事务用来管理insert,update,delete语句

    一般来说,事务是必须满足4个条件(ACID): Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(持久性)

    1、事务的原子性:一组事务,要么成功;要么撤回。

    2、稳定性 : 有非法数据(外键约束之类),事务撤回。

    3、隔离性:事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。

    4、持久性:一个事务一旦被提交,它对数据库中数据的改变就是永久的,接下来即使数据库发生故障也不应该对其有任何影响。

    执行下面的程序

    $mysqli = new mysqli('localhost','root','mayi1991','mysqldemo');
    if($mysqli->connect_error){
        die('数据库连接错误'.$mysqli->connect_error);
    }
    $sql1 = "update account set balance = balance - 2 where id = 1";
    //这里故意写错指令中的balance1属性
    $sql2 = "update account set balance1 = balance + 2 where id = 2";        
    $result1 = $mysqli->query($sql1);
    $result2 = $mysqli->query($sql2);
    if(!$result1 || !$result2){
        die('操作错误'.$mysqli->error);
    }else{
        die('操作成功');
    }
    $mysqli->close();

    虽然上面的代码有报错,但是在数据库中,id=1的balance已经改变;这样就会出现问题;

    我们要的同时改变,如果有一个出错,就不改变;这个时候,我们就需要“事务控制”来保证“一致性”;

    我们需要用到的方法autocommit() commit();看下面的代码

    $mysqli = new mysqli('localhost','root','mayi1991','mysqldemo');
    if($mysqli->connect_error){
        die('数据库连接错误'.$mysqli->connect_error);
    }
    //关闭数据库自动提交
    $mysqli->autocommit(false);
    $sql1 = "update account set balance = balance - 2 where id = 1";
    //这里故意写错属性balance1
    $sql2 = "update account set balance1 = balance + 2 where id = 2";
    $result1 = $mysqli->query($sql1);
    $result2 = $mysqli->query($sql2);
    if(!$result1 || !$result2){
        die('操作错误'.$mysqli->error);
        $mysqli->rollback();    //事务回退
    }else{
        //操作全部正确后再提交
        $mysqli->commit();
    }
    $mysqli->close();

    首先利用autocommit(false)方法,关闭数据库自动提交,然后当操作语句全部成功后,commit()提交到数据库;

    如果操作失败,我们用rollback()方法回退。

    推荐学习:《PHP视频教程

    以上就是php事务删除怎么操作的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:事务 php
    上一篇:php 怎么抑制报错 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 浅析MySQL中的事务隔离级别,聊聊其实现原理• MySQL事务的ACID特性及并发问题知识点总结• php事务回滚不了怎么办• 一篇文章带你彻底搞懂Redis事务• MySQL详解之事务隔离机制与实现原理
    1/1

    PHP中文网