PHP基础 mysqli的事务处理
1: <?php
2: // PHP 的mysqli的事务处理
3: //========================================================
4: //执行多条sql语句,如果都成功则提交事务,如果一个执行失败则回滚事务
5: //把多条sql语句的执行看成一个sql语句,要么都成功,要么都失败
6: //例:银行转账
7: //mysql4.0以上版本都启用了事务
8: //但目前只有InnoDB和BDB两种表类型支持事务,
9: //在命令行中:默认创建的表类型为MyISAM表类型,是不支持事务的
10: //在命令行中建表时添加 type=InnoDB ,默认自动提交事务autocommit,不能回滚
11: //手动提交:
12: //1.关闭自动提交 set autocommit=0;
13: //2.开启事务 start transaction (mysqli中不需要开启,自动开启)
14: //3.$mysqli->query($sql); 执行sql
15: //4.判断执行是否成功
16: //5.如果都成功,则提交事务commit(),否则回滚事务 rollback()
17:
18: //创建连接对象
19: $mysqli = new mysqli("localhost","root","1234","BankDB");
20:
21: if($error=$mysqli->connect_error){
22: die("连接数据库失败:".$error);
23: }
24:
25: //设置传输字符编码
26: $mysqli->query('set names utf8');
27: // 或者
28: // $mysqli->set_charset("uf8");
29:
30: //关闭自动提交事务
31: $mysqli->autocommit(false);
32:
33: $error=true;
34:
35: $price=50;
36:
37: $sql1= "update uinfo set umoney=umoney-{$price} where uname='张三';";
38: $sql2= "update uinfo set umoney=umoney+{$price} where uname='李四';";
39:
40: //执行sql语句
41: $result1 = $mysqli->query($sql1);
42: if(!$result1) {
43: $error=false;
44: echo "从张三转出失败!\n";
45: }
46: else if($mysqli->affected_rows==0)
47: {
48: $error=false;
49: echo "张三的钱没有变化!\n";
50: }
51:
52: //执行sql语句
53: $result2 = $mysqli->query($sql2);
54: if(!$result2){
55: $error=false;
56: echo "转入李四失败\n";
57: }
58: else if($mysqli->affected_rows==0)
59: {
60: $error=false;
61: echo "李四的钱没有变化!\n";
62: }
63:
64: //判断执行过程是否出错,如果语句都执行成功则提交事务,否则回滚事务
65: if ($error) {
66: $mysqli->commit();
67: echo "事务提交,转账成功!";
68: } else {
69: $mysqli->rollback();
70: echo "事务回滚,转账失败!";
71: }
72:
73: //打开自动提交事务
74: $mysqli->autocommit(true);
75:
76: $mysqli->close();
77: ?>
PHP基础 mysqli的事务处理的更多相关文章
- php+Mysqli利用事务处理转账问题实例
本文实例讲述了php+Mysqli利用事务处理转账问题的方法.分享给大家供大家参考 <?php /**php+Mysqli利用事务处理转账问题实例 * author http://www.lai ...
- PHP MYSQLI中事务处理
MYSQL事务处理让所有sql语句执行成功后才去处理,如果有一条没有成功或者报错就会回滚事务,防止敏感操作处理失败.MYSQL中只有INNODB和BDB类型的数据表才能支持事务处理!其它类型是不支持的 ...
- php基础-mysqli
基本八个步骤 //连接数据库 $link = mysqli_connect('localhost', 'root', ''); //判断是否连接成功 if (!$link) { exit('数据库连接 ...
- mysqli预处理和事务处理
1 应用环境 mysqli预处理功能(大量数据处理时使用) 2 步骤 a)mysqli连接数据库 $mysqli = new mysqli('localhost','root','root','chu ...
- PHP数据库扩展mysqli的函数试题
1.mysqli链接数据库的方式是什么? 2.mysqli获取链接错误号的属性是什么? 3.mysqli获取链接错误信息的属性是什么? 4.mysqli执行sql语句的函数是什么? 5.mysqli获 ...
- PHP处理MySQL事务代码
php使用mysqli进行事务处理 <?php$db = new mysqli("localhost","root",""," ...
- C# Winform下一个热插拔的MIS/MRP/ERP框架12(数据处理基类)
作为ERP等数据应用程序,数据库的处理是重中之重. 在框架中,我封装了一个数据库的基类,在每个模组启动或窗体启动过程中,实例化一个基类即可调用CRUD操作(create 添加read读取 update ...
- PHP.15-mysqli
从PHP5.0开始可以使用mysql(i), 是一个面向对象的技术(新加功能都会以对象形式添加) i:表示改进,1. 功能增加了, 2,效率大大增加(以后的PHP项目改成mysqli),3,更稳定 m ...
- mysqli事务处理demo
<?php $mysqli=new mysqli("localhost", "root", "123456", "xsph ...
随机推荐
- siege详解
简介 siege是一款HTTP/FTP负载测试和基准压测工具 Download http://download.joedog.org/siege/siege-latest.tar.gz 安装 ...
- VS 错误解决(项目-属性-启用调试器)
我是先安装了VS2012, 之后由于需要安装了VS2008, 但在VS2012中可以运行程序但是不能调试, 即按Ctrl+F5可以运行, 但是按F5会提示错误. "尝试运行项目时出错:Unc ...
- Beta版本——第一次冲刺博客
我说的都队 031402304 陈燊 031402342 许玲玲 031402337 胡心颖 03140241 王婷婷 031402203 陈齐民 031402209 黄伟炜 031402233 郑扬 ...
- HTML5学习总结-09 拖放和手机触屏事件
一 拖放 拖放(Drag 和 drop)是 HTML5 标准的组成部分.拖放是一种常见的特性,即抓取对象以后拖到另一个位置.在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放. 课程参考 ht ...
- 利用jar命令打包和解压
常常在网上看到有人询问:如何把 java 程序编译成 .exe 文件.通常回答只有两种,一种是制作一个可执行的 JAR 文件包,然后就可以像.chm 文档一样双击运行了:而另一种是使用 JET 来进行 ...
- iOS - 全屏滑动
取经地址 1.使用关联 关联是指把两个对象相互关联起来,使得其中的一个对象作为另一个对象的一部分. 使用关联,是基于关键字的,因此,我们可以为任意对象增加任意多的关联,但是关键字是唯一的.关联可以保证 ...
- Nginx系列4之基础配置
preface 公司跑得大多数是LNMP平台,所以借此机会多多了解下Nginx.下面主要说说Nginx下面几点: 防盗链 日志切割 负载均衡 虚拟主机 location匹配解释 substatus状态 ...
- Android学习笔记——ListView
该工程的功能是实现在一个activity中显示一个列表 以下代码是MainActivity.java中的代码 package com.example.listview; import java.uti ...
- C++中public,protected,private派生类继承问题和访问权限问题
C++中public,protected,private派生类继承问题和访问权限问题 当一个子类从父类继承时,父类的所有成员成为子类的成员,此时对父类成员的访问状态由继承时使用的继承限定符决定. 1. ...
- codeforces 711B - Chris and Magic Square(矩阵0位置填数)
题目链接:http://codeforces.com/problemset/problem/711/B 题目大意: 输入 n ,输入 n*n 的矩阵,有一个占位 0 , 求得将 0 位置换成其他的整数 ...