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
类型的数据表才能支持事务处理!其他的类型是不支持的!
***
:
一般
MYSQL
数据库默认的引擎是
MyISAM,
这种引擎不支持事务!如果要让
MYSQL
支持事务,可以自己手动修改
:
方法如下:
1.
修改
c:\appserv\mysql\my.ini
文件,找到
skip-InnoDB,
在前面加上
#
,后保存文件。
2.
在运行中输入:
services.msc,
重启
mysql
服务。
3.
到
phpmyadmin
中,
mysql->show engines;(
或执行
mysql->show variables like 'have_%'; ),
查看
InnoDB
为
YES,
即表示数据库支持
InnoDB
了。
也就说明支持事务
transaction
了。
4.
在创建表时,就可以为
Storage Engine
选择
InnoDB
引擎了。如果是以前创建的表,可以使用
mysql->alter table table_name type=InnoDB;
或
mysql->alter table table_name engine=InnoDB;
来改变数据表的引擎以支持事务。
以下是我做測試的示例代碼
:
/***************
transaction--1 ***************/
/*
方法一
*/
mysql_query("BEGIN");
//
或者
mysql_query("START TRANSACTION");
//
若不使用事務,則
$sql
執行成功,
$sql1
執行失敗
$sql
=
" insert into test values('11','88') ";
$sql1 =
" insert into test values('11','88','444') ";
$res
= mysql_query($sql);
$res1 = mysql_query($sql1);
//
因爲使用了事務,則兩個
insert
都執行失敗
if($res && $res1){
mysql_query("COMMIT");
}
else{
mysql_query("ROLLBACK");
}
mysql_query("END");
/****************
transaction--2 *******************/
/*
方法二
*/
mysql_query("SET
AUTOCOMMIT=0");
//
設置
mysql
不自動提交,需自行用
commit
語句提交
$sql
=
" insert into test values('11','88') ";
$sql1 =
" insert into test values('11','88','444') ";
$res
= mysql_query($sql);
$res1 = mysql_query($sql1);
//
因爲使用了事務,則兩個
insert
都執行失敗
if($res && $res1){
mysql_query("COMMIT");
}
else{
mysql_query("ROLLBACK");
}
mysql_query("END");
/*************************** END ***************/
对于不支持事务的MyISAM引擎数据库可以使用表锁定的方法:
代码如下:
//MyISAM & InnoDB 都支持,
//Notes:query語句不能寫在一起如:mysql_query("select * from a;select * from b;");
$sql_1=" LOCK TABLES test WRITE ";
mysql_query($sql_1);
$sql_2=" INSERT INTO test VALUES('".$a."','".$b."') ";
if(mysql_query($sql_2)){
echo 'successful!';
}else{
echo 'Unsuccessful!';
}
$sql_3=" UNLOCK TABLES ";
mysql_query($sql_3);
/*************************** END ***************/
分享到:
相关推荐
} 通常都是上述的写法, 在mysql 不支持事务的时候 , 中间的 setAutoCommit 的事务操作是不是都不生效. 现在innoDB支持 事务了, 上述的 java 代码是否能实现 以下的 事务隔离的 操作, 在修改的时候处于锁定状态 ...
在PHP中使用MySQL事务,通常涉及到几个关键函数:`mysql_query()`、`mysql_rollback()` 和 `mysql_commit()`。下面通过示例代码来详细说明: ```php // 开启事务 mysql_query("SET AUTOCOMMIT=0"); mysql_query(...
本文实例讲述了php实现mysql事务处理的方法。分享给大家供大家参考。具体分析如下: 要实现本功能的条件是环境 mysql 5.2 /php 5 支持事务的table 类型,需要InnoDB,有了这些条件你就可以做上面的实现了,这个事物回滚...
在WAMP环境中,Apache负责接收HTTP请求并返回响应,PHP作为Apache的模块,解析.php文件中的代码并生成动态内容,而MySQL则作为数据存储的后端,保存和处理来自应用程序的数据。 安装与配置WAMP服务器通常涉及以下...
1. **连接与断开**:通过`mysqli_connect()`或`PDO`扩展在PHP中建立与MySQL服务器的连接,完成后使用`mysqli_close()`或`PDO::disconnect()`断开连接。 2. **SQL查询**:PHP可以执行SQL语句来操作数据库,如`SELECT`...
这些扩展提供了原生支持事务的功能,可以通过设置`PDO::ATTR_AUTOCOMMIT`选项为`false`来开启事务模式,然后使用`beginTransaction()`、`commit()`和`rollBack()`等方法来控制事务的生命周期。 ##### 3.3 实现案例...
在PHP7中,MySQL数据库操作通常使用mysqli或PDO_MySQL扩展进行,但对于新手来说,创建一个封装好的数据库操作类可以简化很多工作。这个实例主要介绍如何构建一个PHP7中的MySQL数据库操作类,以实现连接、查询、插入...
1. PHP基础:本书首先会介绍PHP的基本语法,包括变量、数据类型、流程控制结构(如if-else,for,while循环)、函数、数组等,以及如何在HTML中嵌入PHP代码进行动态网页开发。 2. MySQL入门:接着,书中将讲解MySQL...
这些标签说明了讨论的内容集中在如何在PHP环境中使用DLL文件来通过PDO接口操作MySQL数据库。 在压缩包中的文件 "php_pdo_mysql.dll" 是实际的扩展库文件,它是PHP在Windows平台上执行MySQL数据库操作时必须的。另一...
在结合PHP和MySQL进行Web开发部分,本书涵盖了连接和断开数据库、执行SQL查询、处理结果集以及事务管理等内容。此外,还讨论了如何使用PHP的预处理语句防止SQL注入攻击,确保应用程序的安全性。 随着Web应用复杂性...
在PHP+MySQL组合中,MySQL负责存储和处理网站的数据,如用户信息、文章内容等。通过SQL(Structured Query Language)语句,开发者可以对数据进行查询、插入、更新和删除操作。MySQL还支持事务处理,确保数据的一致...
电子书将涵盖PHP的基本语法,如变量、数据类型、流程控制结构、函数等,同时也会介绍MySQL的安装、配置、数据库和表的创建、数据的增删改查以及更高级的主题,如事务处理、存储过程和触发器等。书中会通过丰富的实例...
2. **PHP连接MySQL**:使用`mysqli`或`PDO`扩展在PHP中建立与MySQL数据库的连接,执行SQL语句。 3. **SQL基础**:掌握SQL语言的基本语法,如SELECT、INSERT、UPDATE、DELETE等操作,以及JOIN、WHERE、GROUP BY、...
在IT行业中,PHP和MySQL是两个非常重要的技术,它们共同构建了互联网上众多动态网站的基础。PHP是一种服务器端脚本语言,广泛用于网页开发,而MySQL则是一款关系型数据库管理系统,用于存储和管理网站的数据。...
9. **程序接口**:MySQL提供了多种编程语言的API,如ODBC、JDBC、PHP和Python,这部分会介绍如何在这些语言中连接和操作MySQL数据库。 10. **附录和参考**:包含各种系统变量、函数、错误代码和配置选项的详细列表...
在PHP开发中,与MySQL数据库进行交互是常见的需求。为了方便高效地处理数据库操作,开发者通常会封装一个MySQL操作类,如`PHP_DataSet`。这个类可以提供一系列的方法,包括连接数据库、执行SQL语句、获取结果集、...
此外,你还将学习如何安全地在PHP中操作MySQL,以及如何调试和优化代码。 总之,通过本教程的学习,你将具备使用PHP和MySQL开发Web应用的能力,无论是初学者还是有一定经验的开发者,都能从中受益。请参照“PHP培训...
通过以上步骤,我们可以确保在PHP中使用PDO进行MySQL事务处理时,能够有效地控制数据的完整性和一致性。在实际项目中,事务处理是防止数据损坏和确保业务逻辑正确性的重要手段。了解和熟练掌握PDO的事务处理机制,...
对于高级用户,手册还会讲解事务处理、并发控制和性能优化策略,确保开发者能够充分利用MySQL的强大功能。 PHP与MySQL的结合是Web开发中的常见实践,它们共同构成了动态网站的基础。通过PHP,开发者可以在服务器端...