1, 有一张银行账号表

create table account(
id int primary key,
balance float
);

2,现在有一段php程序,要完成把1号10元钱,转到2号账号上

<?php
$mysqli = new MySQLi("127.0.0.1","root","123456","test");
if($mysqli->connect_error){
die("连接错误".$mysqli->connect_error);
}
$sql1 = "update account set balance = balance -2 where id = 1";
$sql2 ="update account set balance2 = balance + 2 where id = 2";
$b1 = $mysqli->query($sql1) or die($mysqli->error);
$b2 = $mysqli->query($sql2) or die($mysqli->error);
if(!$b1 || !$b2){
echo "失败!";
}else{
echo "成功!";
}
$mysqli->close();

  从上面代码可知,如果$sql1此时需要一种方法来控制两个sql操作同时成功,同时失败。

3,事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml语句要么全部成功,要么全部失败。如:网上转账就是典型的要用事务来处理,用以保证数据的一致性。

<?php
$mysqli = new MySQLi("127.0.0.1","root","123456","test");
if($mysqli->connect_error){
die("连接错误".$mysqli->connect_error);
}
//将提交设为false,【事务一旦提交就没有机会回滚】
$mysqli->autocommit(false);
//设定保存点1
$sql1 = "update account set balance = balance -2 where id = 1";
$sql2 ="update account set balance2 = balance + 2 where id = 2";
$b1 = $mysqli->query($sql1); //每次执行query时候,会设定保存点,此处设定保存点2
$b2 = $mysqli->query($sql2); //此处设定保存点3 if(!$b1 || !$b2){
echo "失败!".$mysqli->error;
$mysqli->rollback(); //如果失败,回滚到保存点1
}else{
echo "成功!";
$mysqli->commit(); //一旦提交,没有机会回滚
}
$mysqli->close();

4,在mysql控制台可以使用事务来操作,具体步骤如下:

① 开启一个事务,start transaction。

② 做保存点,如果不做,在开启事务时候,默认做一个保存点。savepoint 保存点名称。

③ sql操作。

④ 可以回滚,可以提交。如果没有问题就提交commit;如果觉得有问题就回滚,rollback  to 某个保存点;一旦提交,就没法回滚。

5,事务的四大特点acid

① 原子性(Atomicity),原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。

② 一致性(Consistency),事务必须使数据库从一个一致性状态变换到另外一个一致性状态。

③ 隔离性(IsoIation),事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。

④ 持久性(Durability),持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。

mysqli扩展库---事务控制的更多相关文章

  1. php数据库编程---mysqli扩展库

    1,mysqli扩展库允许我们访问MySQL数据库,并对MySql数据库进行curd操作.Mysqli扩展库比mysql扩展库加强了. 2,mysqli扩展库和mysql扩展库的比较 (1) mysq ...

  2. PHP使用mysqli扩展库实现增删改查(面向对象版)

    mysqli扩展库是mysql扩展库的改进版本,在mysql扩展库的基础上提高了稳定性和效率,mysqli扩展库有两套东西,一套就是面向过程的mysqli另一套是面向对象的mysqli.操作方式大体和 ...

  3. mysqli扩展库操作mysql数据库

    配置环境 配置php.ini文件让php支持mysqli扩展库 extension=php_mysqli.dll 建库建表 详见博客 “mysql扩展库操作mysql数据库” 查询数据库 <?p ...

  4. 【小结】有关mysql扩展库和mysqli扩展库的crud操作封装

    现阶段php如果要操作mysql数据库 php给我们提供了3套库 1.mysql扩展库   面向过程操作 2.mysqli扩展库  面向对象操作和面向过程操作并存  安全性和效率高于mysql扩展库 ...

  5. 使用php的mysqli扩展库操作mysql数据库

    简单介绍mysqli: 1.mysqli(mysql improve mysql扩展库的增强版) mysql扩展库和mysqli扩展库的区别 1.mysqli的稳定性  安全性 和 执行效率有所提高 ...

  6. mysqli扩展库应用---程序范例

    通过mysqli扩展库对用户表user1进行增删改查操作,用户表user1结构如下: 1,建立数据库操作类库mysqliTool.class.php,代码如下: <?php class mysq ...

  7. php mysqli扩展库之预处理操作

    分享下php使用mysqli扩展库进行预处理操作的二个例子,有意研究mysqli用法的朋友,可以参考学习下,一定会有所帮助的. 例1.使用mysqli扩展库的预处理技术 mysqli stmt 向数据 ...

  8. PHP mysqli 扩展库(面向对象/数据库操作封装/事务控制/预编译)

    1.和mysql扩展库的区别: (1   安全性.稳定性更高 (2  提供了面向对象和面向过程两种风格 2.php.ini  中的  extension=php_mysqli.dll 解除封印 3.面 ...

  9. PHP的 Mysqli扩展库的多语句执行

    $mysqli->multi_query($sqls);     执行多个sql语句,返回true/false 有结果集时,使用 $mysqli->store_result(); 来获取结 ...

随机推荐

  1. 【转】Pixel-Fillrate

    [Pixel-Fillrate] “填充率“以每秒钟填充的像素点为单位,“三角形(多边形)生成速度“则表示每秒钟三角形(多边形)生成个数.现在的3D显卡的性能也主要看着两项指标,这两项指标的数值越大, ...

  2. linux:alias

    linux系统下常用一个“命令”ll,它实质上是一个别名,而非命令. 我们用它的前提是,在~/.bashrc文件里打开,默认有条记录: #alias ll=’ls -l’ 这就是别名的格式.把注释去掉 ...

  3. ubuntu server 12.04 jdk,ssh及hadoop配置

    我是在32位的系统下配置的,所以在下载安装文件时候要注意. 第一步:下载并配置JDK 1.下载jdk,这里下载的是jdk1.7.0_65版本的,命令如下 $ wget http://download. ...

  4. CloudStack 脚本封装分析

    cloud.keystore是这样生成的 String dname = "cn=\"" + cn + "\",ou=\"" + o ...

  5. WebSocket 教程(转载)

    WebSocket 教程   作者: 阮一峰 日期: 2017年5月15日 WebSocket 是一种网络通信协议,很多高级功能都需要它. 本文介绍 WebSocket 协议的使用方法. 一.为什么需 ...

  6. ProxyPattern(23种设计模式之一)

    设计模式六大原则(1):单一职责原则 设计模式六大原则(2):里氏替换原则 设计模式六大原则(3):依赖倒置原则 设计模式六大原则(4):接口隔离原则 设计模式六大原则(5):迪米特法则 设计模式六大 ...

  7. jQuery自动截取文字长度,超过部分

    <html> <head>     <meta charset="utf-8">     <script src="js/jqu ...

  8. 编写高质量代码改善C#程序的157个建议——建议79:使用ThreadPool或BackgroundWorker代替Thread

    建议79:使用ThreadPool或BackgroundWorker代替Thread 使用线程能极大地提升用户体验度,但是作为开发者应该注意到,线程的开销是很大的. 线程的空间开销来自: 1)线程内核 ...

  9. 团体程序设计天梯赛L2-013 红色警报 2017-03-23 22:08 55人阅读 评论(0) 收藏

    L2-013. 红色警报 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 战争中保持各个城市间的连通性非常重要.本题要求你编写一 ...

  10. linux 系统启动

    系统启动流程 BIOS 我们称之为基本输入输出系统,一般保存在主板上的BIOS芯片中,负责检查硬件并且查找可启动设备:可设置启动顺序: 如果一个设备是可启动,那么第一个扇区512字节的最后两字节是55 ...