MySQLi面向对象实践---事务处理

在看这篇博客的时候,如果你有什么疑惑吗,可以参照一下这两篇博客

MySQLi面向过程实践---事务处理http://www.cnblogs.com/-beyond/p/7577232.html

PDO实现事务处理http://www.cnblogs.com/-beyond/p/7551177.html

MySQLi面向对象的事务处理涉及以下三个函数

public bool mysqli::begin_transaction ([ int $flags [, string $name ]] )
bool mysqli::commit ( void )
bool mysqli::rollback ( void )

示例代码如下:

最重要的莫过于关闭自动提交

 1 <?php
 2     $db=new mysqli("localhost","root","root","test");
 3
 4     $db->begin_transaction();
 5     $db->autocommit(FALSE);//重要
 6     try{
 7         $sql_1="delete from aaa where uid = 2;";
 8         $db->query($sql_1);
 9         if($db->affected_rows<=0){
10             throw new Exception("failed to delete data one\n");
11             //如果操作一失败,则抛出异常,不会继续执行下个操作
12         }
13
14         $sql_2="delete from aaa where uid = 999";
15         $db->query($sql_2);
16         if($db->affected_rows<=0){
17             throw new Exception("failed to delete data two\n");
18             //如果操作2失败,则抛出异常
19         }
20
21         if(!$db->commit()){
22             throw new Exception("failed to commit\n");
23             //如果提交操作出错,则抛出异常
24         }
25         echo "success to delete two data\n";
26     } catch (Exception $e){
27         $db->rollback();
28         echo $e->getMessage();
29         echo "haven‘t finish all works\n";
30     }
31
32     $db->close();
33 ?>
时间: 2024-10-06 06:13:04

MySQLi面向对象实践---事务处理的相关文章

MySQLi面向对象实践---预处理

面向对象的预处理和面向过程的预处理一样,只是转换一种表现形式而已,可以参照一下面向过程的方法http://www.cnblogs.com/-beyond/p/7577155.html 面向对象的预处理涉及以下几个函数: mysqli_stmt mysqli::prepare ( string $query ) bool mysqli_stmt::bind_param ( string $types , mixed &$var1 [, mixed &$... ] ) bool mysqli_

MySQLi面向对象实践--select

对于update.insert.delete请参考http://www.cnblogs.com/-beyond/p/8457580.html 执行select,如果SQL语句执行成功,那么返回的是一个mysqli_result对象,如果SQL语句出错,则返回false. <?php $mysqli = new Mysqli(); $mysqli->connect("localhost","root","root","test

MySQLi面向对象实践--multi_query

使用multi_query可以实现执行多条SQL语句,每一条SQL语句通过分号分隔. 需要注意的是: 多条用分号分隔的SQL语句中,只要有一条SQL语句执行失败,那么这一条SQL语句以及之后的SQL语句就不会执行. 只有当第一条SQL语句执行失败,那么multi_query()的返回值才为false.如果第一条SQL语句执行成功了,那么都会返回true. <?php $mysqli = new Mysqli(); $mysqli->connect("localhost",&

mysqli预处理和事务处理

1 应用环境 mysqli预处理功能(大量数据处理时使用) 2 步骤 a)mysqli连接数据库 $mysqli = new mysqli('localhost','root','root','chuanzhi'); b)设置编码 $mysqli->set_charset('gb2312'); c)发送query语句 使用$mysqli->prepare($query)这个方法表示是预处理,如果涉及到取值,必须指定查询字段 $query = "select id,proName,pr

PHP中用mysqli面向对象打开连接关闭mysql数据库

代码如下: 1 <meta http-equiv="content-type" content="text/html" charset="utf-8"/> 2 <h1>用mysqli面向对象方法连接数据库!-姚远的博客</h1> 3 <form method="POST" action="<?php echo htmlspecialchars($_SERVER['PHP

Mysqli面向对象操作数据库

Mysqli面向对象操作数据库 首先配置一下数据库: 接着用PHP中的Mysqli扩展库面向对象查询这个数据表. 操作分为以下几个步骤: 连接数据库 操作数据库 处理结果 关闭资源 <?php $connect=new mysqli('localhost','wy','000000','test') //连接数据库 if (!$connect){ die("连接失败"); } //判断是否存在 $sql="select * from gubeiqing"; /

C++面向对象实践

实践如下: class Person{ private: int age; char name[25]; int hight; public: Person(int age, int hight, char* name); int getAge(); char* getName(); int getHight(){ return hight; } }; #include "Person.h" Person::Person(int age, int hight, char* name1)

MySQLi面向过程实践---事务处理

数据库的事务处理参见另一篇博客,用PDO实现,和MySQLi操作几乎没有差别,地址是http://www.cnblogs.com/-beyond/p/7551177.html 注意要进行事务处理的表格的存储引擎选择Innodb,而非MyISAM 事务处理需要用到以下函数 bool mysqli_begin_transaction ( mysqli $link [, int $flags [, string $name ]] ) bool mysqli_commit ( mysqli $link

数据库的本质、概念及其应用实践

今天这堂课,分为三个大点,正如标题所指出的,是讨论数据的本质.概念与应用实践.第一点本质的探讨是站在一个更高的高度来分析数据的产生以及各种使用场景,然后将数据相关的存储手段,作一个汇总讲解.而概念,则是一个串讲,主要放在关系数据库上,因为我们六月份公开课,也将以关系型数据库为主.第三点就是通过一些实例来巩固前面两点所讲的内容. 一.数据库的出现源起和本质 1.1 数据库的起源 想像一下我们的电脑,有目录,有文件,文件有大小,有位置,有格式,这个是有文件系统开始就有这个概念的,肯定在有一个地方,存