• php 事物处理


    一:php事物的用法已经场景(我的理解)
    1>高并发,下防止服务器压力过大导致sql执行不成功
    2>转账业务,a客户给b客户进行了转账并且扣除了a账户的钱,但是b账户确没有收到,
    3>订单业务,
    二:在做事物之前,大家要知道只有储存引擎为innoDB,才支持事物,所以
    1> show create table 表名; // 查看某个表的储存引擎是否为innoDB
    2> alter table 表名 engine=InnoDB; //把表的储存引擎修改成innoDB
    三:事物处理的过程:
    1>mysql的默认sql自动提交的,我们用事物的目的就是,不让sql自动提交,而只有
    commit时才执行sql,而sql一旦出错rollback(回滚),所以这样执行多条sql就会出现如果
    成功就会都成功,有一条sql失败,就会全部失败!
    2>也可以直接用set来改变mysql的自动提交模式
    MYSQL默认是自动提交的,也就是你提交一个QUERY,它就直接执行!我们可以通过
    set autocommit=0 禁止自动提交
    set autocommit=1 开启自动提交
    四:下面是我做的测试:
    $conn = mysql_connect('123.207.171.186','shopp','******') or die ("数据连接错误!!!");
    mysql_select_db('shopp',$conn);
    mysql_query("set names 'GBK'"); //使用GBK中文编码;
    //开始一个事务
    mysql_query("BEGIN"); //或者mysql_query("START TRANSACTION");
    $sql = "INSERT INTO `ecs_order_goods` (`order_id`) VALUES ('222')";
    $sql2 = "INSERT INTO `ecs_order_info` (`order_sn`) VALUES ('222')"; //这条我故意写错
    $res = mysql_query($sql);
    $res1 = mysql_query($sql2);
    if($res && $res1){
    mysql_query("COMMIT");
    echo '提交成功。';
    }else{
    mysql_query("ROLLBACK");
    echo '数据回滚。';
    }
    mysql_query("END");

  • 相关阅读:
    Linux进程间通信—消息队列
    Linux进程间通信—信号
    Linux进程间通信—信号量
    Linux进程间通信—管道
    Linux进程间通信:管道,信号量,消息队列,信号,共享内存,套接字
    安全文件传输系统
    嵌入式mp3播放器
    用C语言实现面向对象的开发
    Haskell 差点儿无痛苦上手指南
    Oracle EBS 入门
  • 原文地址:https://www.cnblogs.com/taikongliu/p/6672517.html
Copyright © 2020-2023  润新知