zoukankan      html  css  js  c++  java
  • 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");

  • 相关阅读:
    js 创建Table,每行3列的方式
    多线程 笔记
    WCF binding
    table 变量
    Excel数据使用sql语句导入sqlserver (64位)
    sqlserver链接服务器到Mysql
    easyui datagrid 返回数据正确 fit='true' 时不显示内容
    js设置文本框只读属性的小bug
    windows64位下的redis及memcached的安装和使用
    spring.Net (Mvc)属性依赖注入------实例化对象
  • 原文地址:https://www.cnblogs.com/taikongliu/p/6672517.html
Copyright © 2011-2022 走看看