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 相关文章推荐
第十一节 重载 [11]
Oct 09 PHP
PHP 已经成熟
Dec 04 PHP
网友原创的PHP模板类代码
Sep 07 PHP
深入PHP操作MongoDB的技术总结
Jun 02 PHP
PHP如何利用P3P实现跨域
Aug 24 PHP
ThinkPHP3.1之D方法实例详解
Jun 20 PHP
php的sso单点登录实现方法
Jan 08 PHP
PHP中应该避免使用同名变量(拆分临时变量)
Apr 03 PHP
php基于Snoopy解析网页html的方法
Jul 09 PHP
Laravel 5.3 学习笔记之 错误&amp;日志
Aug 28 PHP
Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)
Feb 15 PHP
PHP编程计算日期间隔天数的方法
Apr 26 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
PHP中的多种加密技术及代码示例解析
2016/10/20 PHP
PHP简单实现正则匹配省市区的方法
2018/04/13 PHP
对jQuery的事件绑定的一些思考(补充)
2013/04/20 Javascript
JavaScript数值数组排序示例分享
2014/05/27 Javascript
jquery实现保存已选用户
2014/07/21 Javascript
JavaScript拆分字符串时产生空字符的解决方案
2014/09/26 Javascript
Javascript中的Callback方法浅析
2015/03/15 Javascript
vue中本地静态图片路径写法
2018/03/06 Javascript
打通前后端构建一个Vue+Express的开发环境
2018/07/17 Javascript
vue鼠标移入添加class样式,鼠标移出去除样式(active)实现方法
2018/08/22 Javascript
简单易扩展可控性强的Jquery转盘抽奖程序
2019/03/16 jQuery
学习node.js 断言的使用详解
2019/03/18 Javascript
vue搜索和vue模糊搜索代码实例
2019/05/07 Javascript
基于vue实现一个神奇的动态按钮效果
2019/05/15 Javascript
通过vue手动封装on、emit、off的代码详解
2019/05/29 Javascript
微信小程序 生成携带参数的二维码
2019/10/23 Javascript
js+html+css实现手动轮播和自动轮播
2020/12/30 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
2021/01/13 Vue.js
Python中一行和多行import模块问题
2018/04/01 Python
Python安装pycurl失败的解决方法
2018/10/15 Python
Python字典循环添加一键多值的用法实例
2019/01/20 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
2020/06/06 Python
Python在字符串中处理html和xml的方法
2020/07/31 Python
利用CSS3实现单选框动画特效示例代码
2016/09/26 HTML / CSS
合同专员岗位职责
2013/12/18 职场文书
《雨点儿》教学反思
2014/04/14 职场文书
ktv周年庆活动方案
2014/08/18 职场文书
2014年最新大专生职业生涯规划书范文
2014/09/13 职场文书
2014年幼儿园教师工作总结
2014/11/08 职场文书
简历自我评价优缺点
2015/03/11 职场文书
2015年感恩母亲节的演讲稿
2015/03/18 职场文书
python 统计代码耗时的几种方法分享
2021/04/02 Python
python爬取网页版QQ空间,生成各类图表
2021/06/02 Python
教你用Java在个人电脑上实现微信扫码支付
2021/06/13 Java/Android
spring cloud gateway中如何读取请求参数
2021/07/15 Java/Android
vue代码分块和懒加载非必要资源文件
2022/04/11 Vue.js