关于PDO 开启事物的问题
半支烟z 2016-12-09 11:22:16 public function shiwuAction()
{
try
{
DBData::trans_begin();
$sql = "select * from test where id=1";
$arr = DBData::select($sql);
$num = $arr['num'];
echo "num:".$num; echo "<br>";
$sql = "update test set num = num+10 where id=1";
$upnum = DBData::execsql($sql,2);
echo $upnum;
DBData::trans_rollback();
return false;
$sql = "select * from test where id=1";
$arr = DBData::select($sql);
echo "<hr>";
var_dump($arr);
DBData::trans_commit();
} catch (PDOException $e)
{
DBData::trans_rollback();
}
}
-----说明
$upnum = DBData::execsql($sql,2); 这个为执行sql语句后,返回影响的条数(参数2代表返回影响的条数,0代表什么也不返回)
/**
* 开启事务
*/
public static function trans_begin($val=1)
{
if($val==1)
{
self::setdbw();
self::$dbw->beginTransaction();//开启事务处理
}
}
/**
* 提交事务
*/
public static function trans_commit($val=1)
{
if($val==1)
{
self::setdbw();
self::$dbw->commit();//交易成功就提交
self::$dbw->setAttribute(PDO::ATTR_AUTOCOMMIT, 1);
}
}
/**
* 回滚事务
*/
public static function trans_rollback($val=1)
{
if($val==1)
{
self::setdbw();
self::$dbw->rollBack();
self::$dbw->setAttribute(PDO::ATTR_AUTOCOMMIT, 1);
}
}