• 【PHP】 mysqli_autocommit() 函数


    //获取每一篇文章的内容
    function getPost($f_parent_id, $f_title, $f_username, $f_board_id,$f_post_time, $f_ip,$content){
        $Artical = array();
    
        $conn=db_connect();
        $conn->autocommit(FALSE);
    
        $sql="INSERT into t_article (f_parent_id, f_title, f_username, f_board_id,f_post_time, f_ip) values";
        $sql.="('".$f_parent_id."','".$f_title."','".$f_username."','".$f_board_id."','".$f_post_time."','".$f_ip."')";
        $rs1=$conn->query($sql);
        $ttt=mysqli_insert_id($conn);
        $sq4="SELECT * from t_postinfo where f_uname='".$f_username."'";
        $rs4=$conn->query($sq4);
        
        if($rs4 && $rs4->num_rows){
            $t=$rs4->fetch_object();
            $post_reply=$f_parent_id ? $t->f_reply_times : $t->f_post_times;
        }
    
    
        $sq2="INSERT into t_article_content (f_id, f_content ) values (LAST_INSERT_ID(),'".$content."')";
        
        $rs2=$conn->query($sq2);
        
        if($f_parent_id){
            $sq3="UPDATE t_article set f_has_child=1 where f_id='".$f_parent_id."'";
            $rs3=$conn->query($sq3);
    
            $sq4="UPDATE t_postinfo set f_reply_times=$post_reply+1 where f_uname='".$f_username."'";
            $rs4=$conn->query($sq4);
        }else{
            $sq4="UPDATE t_postinfo set f_post_times=$post_reply+1 where f_uname='".$f_username."'";
            $rs4=$conn->query($sq4);
        }
    
        if( ($rs1 && $rs2 && $f_parent_id && $rs3 && $rs4) || ($rs1 && $rs2 && !$f_parent_id && $rs4)){
          $conn->commit();
           $ret=$ttt;
        }else{
          $conn->rollback();
           $ret=true;
        }
    
        $conn->close();
        return $ret;
    }

    mysqli_autocommit() 函数开启或关闭自动提交数据库修改。

     mysqli_commit() 函数,用于提交指定数据库连接的当前事务。

     mysqli_rollback() 函数,用于回滚当前事务。

    http://www.runoob.com/php/func-mysqli-autocommit.html

    事务:一系列要发生的连续的操作

    事务安全:一种保护连续操作同时满足的一种机制

    事务意义:保证数据操作的完整性

    事务的操作:自动事务(默认)、手动事务

    手动事务:

    1.开启事务:告诉系统以下所有操作不要直接写入数据表,先存放到事务日志;

    2.进行事务操作;

    3.关闭事务:选择性的将日志文件中操作的结果保存到数据表;

    a.提交事务:同步数据表(操作成功)commit

    b.回滚事务:情况日志表(操作失败)rollback

    前提:引擎是innodb

    回滚点:在某个成功的操作完成后,后续的操作可能成功可能失败,可以在当前成功的位置,设置回滚点,可供后续失败操作返回的位置,而不是返回所有操作。

  • 相关阅读:
    fstab是什么?被谁用?怎么写?
    一个驱动导致的内存泄漏问题的分析过程(meminfo->pmap->slabtop->alloc_calls)
    Ubuntu下doxygen+graphviz使用概录
    记录Ubuntu下使用docker使用
    hidraw设备简要分析
    一个版本烧录过程中记录:fdisk、mkfs.ext4、make_ext4fs、img2simg、simg2img
    bootrom/spl/uboot/linux逐级加载是如何实现的?
    Linux uevent分析、用户接收uevent以及mdev分析
    sched_yield()和nanosleep()对进程调度的影响
    Linux Thermal Framework分析及实施
  • 原文地址:https://www.cnblogs.com/yujihang/p/7073381.html
Copyright © 2020-2023  润新知