PHP与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类型的数据表才能支持事务处理!其他的类型是不支持的!
***:一般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 ***************/
$conn = mysql_connect('localhost','root','root') or die ("数据连接错误!!!");
mysql_select_db('test',$conn);
mysql_query("set names 'GBK'"); //使用GBK中文编码;
//开始一个事务
mysql_query("BEGIN"); //或者mysql_query("START TRANSACTION");
$sql = "INSERT INTO `user` (`id`, `username`, `sex`) VALUES (NULL, 'test1', '0')";
$sql2 = "INSERT INTO `user` (`did`, `username`, `sex`) VALUES (NULL, 'test1', '0')";//这条我故意写错
$res = mysql_query($sql);
$res1 = mysql_query($sql2);
if($res && $res1){
mysql_query("COMMIT");
echo '提交成功。';
}else{
mysql_query("ROLLBACK");
echo '数据回滚。';
}
mysql_query("END");
/**************** transaction--2 *******************/
/*方法二*/
mysql_query("SET AUTOCOMMIT=0"); //设置mysql不自动提交,需自行用commit语句提交
$sql = "INSERT INTO `user` (`id`, `username`, `sex`) VALUES (NULL, 'test1', '0')";
$sql2 = "INSERT INTO `user` (`did`, `username`, `sex`) VALUES (NULL, 'test1', '0')";//这条我故意写错
$res = mysql_query($sql);
$res1 = mysql_query($sql2);
if($res && $res1){
mysql_query("COMMIT");
echo '提交成功。';
}else{
mysql_query("ROLLBACK");
echo '数据回滚。';
}
mysql_query("END"); //事务处理完时别忘记mysql_query("SET AUTOCOMMIT=1");自动提交
/******************对于不支持事务的MyISAM引擎数据库可以使用表锁定的方法:********************/
//MyISAM & InnoDB 都支持,
/*
LOCK TABLES可以锁定用于当前线程的表。如果表被其它线程锁定,则造成堵塞,直到可以获取所有锁定为止。
UNLOCK TABLES可以释放被当前线程保持的任何锁定。当线程发布另一个LOCK TABLES时,或当与服务器的连接被关闭时,所有由当前线程锁定的表被隐含地解锁。
*/
mysql_query("LOCK TABLES `user` WRITE");//锁住`user`表
$sql = "INSERT INTO `user` (`id`, `username`, `sex`) VALUES (NULL, 'test1', '0')";
$res = mysql_query($sql);
if($res){
echo '提交成功。!';
}else{
echo '失败!';
}
mysql_query("UNLOCK TABLES");//解除锁定
分享到:
相关推荐
### PHP与MySQL事务处理示例 #### 示例1:使用BEGIN/COMMIT/ROLLBACK ```php $conn = mysql_connect('localhost', 'root', 'root') or die("连接失败!!!"); mysql_select_db('test', $conn); mysql_query("set ...
关于mysql的事务处理 public static void StartTransaction(Connection con, String[] sqls) throws Exception { if (sqls == null) { return; } Statement sm = null; try { // 事务开始 System....
5. PHP与MySQL事务处理 对于需要确保数据一致性的操作,PHP和MySQL支持事务处理。通过`beginTransaction()`开启事务,`commit()`提交事务,`rollback()`回滚事务,可以确保一组操作要么全部成功,要么全部失败。 6...
本文实例讲述了php实现mysql事务处理的方法。分享给大家供大家参考。具体分析如下: 要实现本功能的条件是环境 mysql 5.2 /php 5 支持事务的table 类型,需要InnoDB,有了这些条件你就可以做上面的实现了,这个事物回滚...
### 基于MySQL和PHP的分布式事务处理 #### 一、引言 随着互联网技术的发展,越来越多的应用程序需要跨越多个服务器或者多个地理位置的数据中心来处理数据。这导致了分布式事务处理的需求日益增长。分布式事务处理...
在PHP中使用MySQL事务,通常涉及到几个关键函数:`mysql_query()`、`mysql_rollback()` 和 `mysql_commit()`。下面通过示例代码来详细说明: ```php // 开启事务 mysql_query("SET AUTOCOMMIT=0"); mysql_query(...
**PHP6与MySQL5:构建动态网站的基础** 在互联网开发领域,PHP和MySQL是两个非常重要的工具,尤其对于初学者来说,它们提供了构建动态网站的简单而强大的平台。虽然PHP6并未正式发布,但这个“PHP6与MySQL5”主题仍...
接下来,我们来看PHP下PDO的MySQL事务处理实例。以下是几个关键步骤: 1. **关闭自动提交**:在开始事务之前,需要关闭自动提交模式。在PDO中,可以通过设置`PDO::ATTR_AUTOCOMMIT`属性为0来实现。例如: ```php ...
在PHP和MySQL的应用场景中,高并发环境下的数据一致性与完整性是至关重要的。本文将深入探讨如何解决在高并发条件下,使用PHP进行加锁事务处理的问题,以确保数据的正确性和唯一性。 首先,让我们回顾一下问题背景...
作者深入浅出地介绍了如何使用PHP和MySQL进行程序设计,内容涵盖了基础概念、语法、数据类型、操作符、流程控制、函数、面向对象编程、错误处理、数据库设计、SQL查询、事务处理、安全性和性能优化等多个方面。...
MySQL5,是广泛使用的开源关系型数据库管理系统,其主要特性包括事务处理、存储过程、触发器、视图等。这些特性使得MySQL5在处理复杂的数据操作和并发控制时表现出色。学习MySQL5,你需要理解SQL语言的基本语法,...
5. **PHP与MySQL结合**:`ch30 - Using PHP with MySQL`章节详细介绍了如何使用PHP连接和交互MySQL数据库,包括预处理语句、结果集处理和数据库连接池。 6. **MySQL客户端**:`ch27 - The Many MySQL Clients`章节...
MySQL5.5.56是该版本的一个稳定版,提供高效的数据存储和检索,支持事务处理,具备良好的可扩展性和安全性。 PHP(Hypertext Preprocessor)是一种广泛使用的服务器端脚本语言,尤其适合Web开发。PHP5.6.31是该系列...
MySQL还支持事务处理,确保数据的一致性和完整性。 在构建【PHP+MYSQL网站】时,首先需要设计数据库架构,创建所需的表和字段,定义数据类型和约束。然后,使用PHP编写前端页面,处理用户的请求,并通过PHP的MySQLi...
在PHP中,可以使用`mysql_query()`函数执行这些SQL命令来处理MySQL事务。例如: ```php mysql_query("BEGIN"); // 执行一系列SQL操作 if (所有操作成功) { mysql_query("COMMIT"); } else { mysql_query(...
将详细介绍PDO(PHP Data Objects)和mysqli扩展,它们是PHP连接MySQL的主要方式,包括预处理语句、事务处理等安全高效的数据库操作技巧。 4. Web应用开发:通过实际案例,书中将展示如何使用PHP和MySQL开发用户...
此外,还会涉及PHP与MySQL之间的事务处理、错误处理以及安全性措施,如防止SQL注入。 对于`1823.html`和`606.html`,读者可以学习如何在HTML表单中嵌入PHP代码,接收用户输入,并通过PHP处理这些数据。`1676.pdf`...