thinkphp3.2.x和thinkphp5事务处理有很大的区别,这里列出来它们两个的区别。
一、thinkphp3.2.x事务处理实例
//事务处理
M()->startTrans();//开启事务
$result = true;
/*以下进行相关的业务逻辑操作*/
…… 如果出现错误,将$result=false;正确就不用处理
/*以上进行相关的业务逻辑操作*/
if(!$result)
{
M()->rollback();//回滚
$this->error(‘错误提示’);
}
M()->commit();//事务提交
二、thinkphp5事务处理实例
// 启动事务
Db::startTrans();
try{
/*以下进行相关的业务逻辑操作*/
……
/*以上进行相关的业务逻辑操作*/
// 提交事务
Db::commit();
} catch (\Exception $e) {
// 回滚事务
Db::rollback();
}
如果出现Class ‘app\index\model\Db’ not found这个错误,需要加上use think\DB;
以上就是两者的区别
注意:如果程序没有错误,但数据没有写入数据库中,这可能是你的数据库使用ENGINE=MyISAM引擎。
因为在mysql中使用事务处理的话,需要数据库引擎支持事务处理。MySQL的MyISAM引擎不支持事务处理,需要使用InnoDB引擎。去数据库中设计中将ENGINE=MyISAM修改成ENGINE=InnoDB即可
原创文章,转载请注明来源www.aspbc.com,谢谢。