Mysql事务处理(php代码)

来源:互联网 发布:mac和windows双系统 编辑:程序博客网 时间:2024/05/18 02:20

1.开启事务 start transaction/begin

在mysql命令行的默认下,事务都是自动提交的,sql语句提交后马上会执行commit操作。但是用start

transaction/begin开启一个事务的时候,我们对sql的操作都发生在内存中,但是没有真正的反馈到数据库

磁盘的文件中!

2.回滚 rollback

回滚,就是恢复到事务开启之前的最原始的状态!

注意:回滚操作会自动的关闭一个事务,如果想再次执行事务,需要重新开启事务!

3.提交 commit

事务处理最典型例子:银行转账。

首先查看数据库中各自卡里的金钱余额

这里写图片描述

php代码实现:

<?php /*** MySQL实现事务操作*/echo "<meta charset=utf-8>";// 1 连接数据库$link = @mysql_connect('localhost','root','') or die('连接数据库失败');mysql_select_db('test',$link);mysql_query('set names utf8');// 2  开启事务mysql_query("start transaction");//设置一个变量,用来判断所有sql语句是否成功$flag = true;// 2.1执行事务中的一组sql语句 // 李四的balance+1000$sql = "update balanceinfo set balance=balance+1000 where name='李四'";$res = mysql_query($sql);if (!$res) {    //若sql语句执行失败,把$falg设置为false    $flag = false;}//张三的balance-1000$sql = "update balanceinfo set balance=balance-1000 where name='张三'";$res = mysql_query($sql);if (!$res) {    //若sql语句执行失败,把$falg设置为false    $flag = false;}// 2.2 判断事务是否执行成功if ($flag) {    //所有sql语句执行成功,把sql语句提交    mysql_query('commit');    echo "转账成功!";}else{    // 如其中一条执行失败,则回滚到事务开启之前的状态    mysql_query('rollback');    echo "转账失败!";}

当某一条语句未执行成功时,事物不会提交,而会回滚,把数据恢复到开始事务之前的原始状态,这也是使用事务的作用,即只有当事务中所有sql语句全部执行成功,事务才会提交,否则会回滚。