pdo 事务

<?php
	
	//pdo 实现mysql 事务处理 简单示例
	/*
		实现向数据库中写入多条数据的事务
		insert into test values ('test123', 'test123')
	*/

	$type     = 'mysql';		//要连接的数据库类型
	$host     = 'localhost';	//数据库主机
	$dbname   = 'test';			//要选择的数据库名称
	$password = '';
	$username = 'root';

	$dsn = "{$type}:dbname={$dbname};host={$host}";

try{
	
	//连接数据库
	$pdo = new PDO($dsn, $username, $password);

	//编码
	$pdo->exec("set names utf8");

	//设置错误提示方式
	$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

	//开启标准事务
	$pdo->beginTransaction();

	//构造sql语句
	//$sql = "insert into test values (?,?)";
	$sql = "insert into test values (:user, :password)";	
	//或者使用此sql语句 :user :password 与问号功能相似 绑定参数

	$stmt = $pdo->prepare($sql);

	//为sql语句中的变量绑定变量
	$stmt->bindParam(':user', $username);
	$stmt->bindParam(':password', $password);

	//为sql语句中的变量 赋值
	$username = 'test123';
	$password = '123456';

	$stmt->execute();

	$rows = $stmt->rowCount();

	if($rows<1){
		//如果失败则抛出异常
		throw new PDOexception('第一句sql语句执行失败!', '01');

	}


	$username = 'hello123';
	$password = '123456';

	$stmt->execute();

	$rows = $stmt->rowCount();

	if($rows<1){
		//如果失败则抛出异常
		throw new PDOexception('第二句sql语句执行失败!', '02');

	}


	$username = 'world123';
	$password = '123456';

	$stmt->execute();

	$rows = $stmt->rowCount();

	if($rows<1){
		//如果失败则抛出异常
		throw new PDOexception('第三句sql语句执行失败!', '02');

	}

	//如果没有异常被抛出则 sql语句全部执行成功 提交事务
	$pdo->commit();


}catch(PDOexception $e){

	//如果有异常被抛出 则事务失败 执行事务回滚
	$pdo->rollback();

	//输出异常信息
	echo $e->getCode().'-----'.$e->getMessage();

	$pdo = null;

}


?>
 

猜你喜欢

转载自superhuo.iteye.com/blog/1637803
PDO