php结合mysql与mysqli扩展处理事务的方法


Posted in PHP onJune 29, 2016

本文实例讲述了php结合mysql与mysqli扩展处理事务的方法。分享给大家供大家参考,具体如下:

以下只是展示如何应用,具体用的时候要加上判断,如果都执行成功则提交,否则回滚

看前先分清mysqli与mysql扩展是不一样的

mysqli扩展处理事物:

$mysqli=new mysqli('localhost','root','123456','test');
$mysqli->autocommit(false);//开始事物
$query="update a set money=money+30 where a_id='1'";
$mysqli->query($query);
$query="update b set money=money-30 where b_id='1'";
$mysqli->query($query);
//$mysqli->rollback();//回滚
$mysqli->commit();   //提交事物
$mysqli->autocommit(true);//不使用事物

mysql扩展处理事物:

<?php
mysql_connect('localhost','root','123456');
mysql_select_db('test');
mysql_query('SET AUTOCOMMIT=0'); //不自动提交
mysql_query('BEGIN');       //开始事务
$query="UPDATE a SET money = money +30 WHERE a_id =1";
mysql_query($query);
$query="UPDATE b SET money = money -30 WHERE b_id =1";
mysql_query($query);
mysql_query('COMMIT');       //提交
//mysql_query('ROLLBACK');     //回滚
mysql_query('SET AUTOCOMMIT=1'); //打开自动提交
?>

对mysql扩展处理事务的说明,原文可参考本站:

MYSQL的事务处理主要有两种方法。

1、用begin,rollback,commit来实现

begin 开始一个事务
rollback 事务回滚
commit    事务确认

2、直接用set来改变mysql的自动提交模式

MYSQL默认是自动提交的,也就是你提交一个QUERY,它就直接执行!我们可以通过:

set autocommit=0  禁止自动提交
set autocommit=1 开启自动提交

来实现事务的处理。

但注意当你用 set autocommit=0 的时候,你以后所有的SQL都将做为事务处理,直到你用commit确认或rollback结束,注意当你结束这个事务的同时也开启了个新的事务!按第一种方法只将当前的作为一个事务!

个人推荐使用第一种方法!

MYSQL中只有INNODB和BDB类型的数据表才能支持事务处理!其他的类型是不支持的!(切记!)

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP+Tidy-完美的XHTML纠错+过滤
Apr 10 PHP
PHP中通过语义URL防止网站被攻击的方法分享
Sep 08 PHP
php不写闭合标签的好处
Mar 04 PHP
使用PHP生成二维码的两种方法(带logo图像)
Mar 14 PHP
PHP模板引擎Smarty的缓存使用总结
Apr 24 PHP
PHP获取数组长度或某个值出现次数的方法
Feb 11 PHP
PHP中的traits简单使用实例
May 13 PHP
php观察者模式应用场景实例详解
Feb 03 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
Dec 26 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
May 21 PHP
PHP实现批量修改文件名的方法示例
Sep 18 PHP
phpstorm最新激活码分享亲测phpstorm2020.2.3版可用
Nov 22 PHP
php简单解析mysqli查询结果的方法(2种方法)
Jun 29 #PHP
php mysqli查询语句返回值类型实例分析
Jun 29 #PHP
thinkphp框架实现数据添加和显示功能
Jun 29 #PHP
thinkphp框架实现删除和批量删除
Jun 29 #PHP
浅谈PHP值mysql操作类
Jun 29 #PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
Jun 28 #PHP
php 在字符串指定位置插入新字符的简单实现
Jun 28 #PHP
You might like
How do I change MySQL timezone?
2008/03/26 PHP
PHP数组实例总结与说明
2011/08/23 PHP
jQuery中复合属性选择器用法实例
2014/12/31 Javascript
jQuery验证元素是否为空的两种常用方法
2015/03/17 Javascript
javasript实现密码的隐藏与显示
2015/05/08 Javascript
基于jQuery倒计时插件实现团购秒杀效果
2016/05/13 Javascript
AngularJS ng-blur 指令详解及简单实例
2016/07/30 Javascript
浅析Javascript ES6新增值比较函数Object.is
2016/08/24 Javascript
JS小数转换为整数的方法分析
2017/01/07 Javascript
浅析JavaScript中var that=this
2017/02/17 Javascript
Vue官方文档梳理之全局配置
2017/11/22 Javascript
JavaScript中严格判断NaN的方法
2018/02/16 Javascript
vue服务端渲染页面缓存和组件缓存的实例详解
2018/09/18 Javascript
angularJs中$scope数据序列化的实例
2018/09/30 Javascript
JS面试题大坑之隐式类型转换实例代码
2018/10/14 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
2018/10/15 Javascript
微信小程序实现商品属性联动选择
2019/02/15 Javascript
ES6 Proxy实现Vue的变化检测问题
2019/06/11 Javascript
[02:28]DOTA2亚洲邀请赛 LGD战队巡礼
2015/02/03 DOTA
[49:11]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第二场 12.20
2020/12/23 DOTA
python装饰器实例大详解
2017/10/25 Python
python库lxml在linux和WIN系统下的安装
2018/06/24 Python
PyTorch中常用的激活函数的方法示例
2019/08/20 Python
PyCharm2020.3.2安装超详细教程
2021/02/08 Python
全球最大的网上自行车商店:Chain Reaction Cycles
2016/12/02 全球购物
美国睫毛、眉毛精华液领导品牌:RevitaLash Cosmetics
2018/03/26 全球购物
澳大利亚便宜隐形眼镜购买网站:QUICKLENS Australia
2018/10/06 全球购物
库房主管岗位职责
2013/12/31 职场文书
2014新年元旦活动策划方案
2014/02/18 职场文书
交通事故协议书
2014/04/15 职场文书
老干部工作先进集体事迹材料
2014/05/21 职场文书
整改落实情况汇报材料
2014/10/29 职场文书
机动车交通事故协议书
2015/01/29 职场文书
邀请函格式范文
2015/02/02 职场文书
小学二年级语文教学反思
2016/03/03 职场文书
Spring Boot实战解决高并发数据入库之 Redis 缓存+MySQL 批量入库问题
2022/02/12 Redis