事务处理

多条SQL语句当成一个整体来进行执行,如果其中由一条SQL语句没有执行成功,

那么所有的SQL语句都要执行失败,将状态回滚到最初状态。

MYSQL中只有INNODB和BDB类型的数据表才能支持事务处理!其他的类型是不支持的!

PDO::beginTransaction  启动一个事务 

PDO::commit  提交一个事务

PDO::rollBack — 回滚一个事务

<?php

$dsn = 'mysql:host = localhost;dbname=user;charset=utf8';
try{
$pdo = new PDO($dsn,'root','123456');
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e)
{
die('数据库连接失败'.$e->getMessage());
}

try{
$pdo->beginTransaction();
$sql = 'update user set money=money-500 where id=1';
$ret = $pdo->exec($sql);
if($ret >0){
echo "建驴转款成功 <br />";
}else{
throw new PDOException('建驴转款失败<br />');
}

$sql = 'update user set money=money+500 where id=2';
$ret = $pdo->exec($sql);
if($ret >0){
echo "建猪转入成功<br />";
}else{
throw new PDOException('建猪转入失败<br />');
}
$pdo->commit();
echo "交易成功!<br />";
}catch(PDOException $e){
$pdo->rollback();
echo $e->getMessage();
}
posted @ 2019-08-14 20:08  runde  阅读(208)  评论(0)    收藏  举报