/**
* 买家订单状态操作
*
*/
public function memberChangeState($state_type, $order_info, $member_id, $member_name, $extend_msg) {
try {
$this->beginTransaction();//开始一个事务
if ($state_type == 'order_cancel') {
$this->_memberChangeStateOrderCancel($order_info, $member_id, $member_name, $extend_msg);
$message = '成功取消了订单';
} elseif ($state_type == 'order_receive') {
$this->_memberChangeStateOrderReceive($order_info, $member_id, $member_name, $extend_msg);
$message = '订单交易成功,您可以评价本次交易';
}
$this->commit();//事务确认
return array('success' => $message);
} catch (Exception $e) {
$this->rollback();//事务回滚
return array('error' => $message);
}
}
附两个原生的例子:
/*************** 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");自动提交
评论