永发信息网

请问在php中如何控制多表事务?

答案:3  悬赏:30  手机版
解决时间 2021-02-02 20:11
  • 提问者网友:niaiwoma
  • 2021-02-02 15:20
就是我在一个方法里面对多张 相互独立 没有逻辑关系 的表做操作,现在想要的效果就是 如果其中有一次操作不成功 所有的操作都不执行 应该怎么控制? 跪求大神指教!!
最佳答案
  • 五星知识达人网友:人间朝暮
  • 2021-02-02 15:40
php框架中多表事务操作实例,参考如下:
function makeAcquire($nUsers,$nAwards)
{
//更新数据库
$tranDb = new Model();
$tranDb->startTrans();
for($i = 0; $i < sizeof($nUsers); $i++)
{
//更新表Acquire
$flagAc = $tranDb->table('Acquire')->add($acquire);
//更新表Users
$where = array('u_id'=>$nUsers[$i]['u_id']);
$flagU = $tranDb->table('Users')->where($where)->setInc('u_man_count',1);
//更新表Award
$where = array('a_id'=>$nAwards[$i]['a_id']);
$flagA = $tranDb->table('Award')->where($where)->setDec('a_count',1);
}
if($flagAc && $flagU && $flagA)
{
$tranDb->commit();
}
else
{
$tranDb->rollback();
}
}
全部回答
  • 1楼网友:动情书生
  • 2021-02-02 17:24
建议你用存储过程,就能简单处理了,
  • 2楼网友:天凉才是好个秋
  • 2021-02-02 17:19
beginTransaction(); // 尝试数据库操作. // 假如成功,commit该操作; // 假如, roll back. try { $db->query(...);//这里写你需要的查询操作 $db->exec(....);//这里写你需要的插入操作 $db->commit(); } catch (Exception $e) { $db->rollBack(); echo $e->getMessage(); } innodb 支持事务,myisam不支持事务
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯