php - 我可以使用 CI 进行多次事务更新,如果更新失败则将其全部回滚吗?

标签 php codeigniter

我正在使用 CodeIgniter 更新多个条目,我怀疑我是否正确使用了事务......现在我有这个

$this->db->trans_begin();
foreach ($query->result_array() as $b){
    try{
       $querystring = "somemysql to update... pure mysql";  
       $query = $this->db->query($querystring);
    }catch(Exception $e){
        $this->db->trans_rollback();
    }
}
$this->db->trans_commit();

目前,我没有收到任何错误......并且似乎工作正常,我不知道的是:

如果我要更新 4/100,那么这只会回滚 #4 吗?还是#1、#2、#3?

有什么想法吗? 谢谢。

最佳答案

按照你这样写,如果4有异常; 1,2,3将被回滚..

但是它会继续到5+,想必这不是你想要的!

我还假设 trans_rollback() 结束事务,因此下一个查询将在事务之外运行,并且如果发生另一个异常,则不会回滚。您甚至可能在 trans_commit() 或其他尝试的 trans_rollback() 上遇到未捕获的异常。

我猜你想要的是:

$this->db->trans_begin();
try{
  foreach ($query->result_array() as $b){
    $querystring = "somemysql to update... pure mysql"; 
    $query = $this->db->query($querystring);
  }
  $this->db->trans_commit();
}
catch(Exception $e){
  $this->db->trans_rollback();
}

关于php - 我可以使用 CI 进行多次事务更新,如果更新失败则将其全部回滚吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26045886/

相关文章:

javascript - file_put_contents 与 jquery 重新加载?

php - 如何使用 Codeigniter php 框架显示图像?

php - Access-Control-Allow-Origin 未出现在 codeigniter 的响应 header 中

php - 优胜美地/Mamp Pro/CodeIgniter 错误

mysql - 连接 Codeigniter 表中最后插入的数据/值

php - HTML 表单数据 > PHP > MySQL UTF 编码(西里尔字母)

php - 如何将选择值传输到php?

php - 用 PHP/Python 解析文本?如何?什么?

php - 在 Wordpress 中,主题文件夹中的 .php 文件不运行,但返回 404 错误

php - 如何从批处理文件执行 codeigniter Controller