codeIgniter中与事务相关的问题

时间:2014-09-16 09:54:51

标签: database codeigniter transactions

我有一个表temp_users,用于在激活帐户之前保存用户的输入数据。 当注册验证成功时,生成随机数并且用该号码向用户发送电子邮件,并且还将输入数据与该随机数一起添加到temp_users。 当用户单击其电子邮件中的激活链接时,控制器中的新功能将启动,如果成功运行,则用户的所有输入数据都将发送到表perm_users,并删除temp_users的数据。 我正在使用模型model_users。

问题1

if($this->model_users->add_temp_users($email_key)){                  
     if ($this->email->send()) {
       echo "An email has been sent to you. Click the link to activate your account.";
       } else {
       $this->model_users->delete_temp_users($email_key); 
        echo 'Some error occured, try again later.';
      }


     }else{

        echo "Some error occured, try again later.";
      }

如果电子邮件发送失败(我尝试断开互联网),temp_users中的数据不会被删除,锁定时间错误就会过期。

问题2

if($this->email->send()){

    if ($this->model_users->add_temp_users($email_key)) {
      echo "An email has been sent to you. Click the link to activate your account.";
     }else {
      echo 'Some error occured, try again later.';
     }

  }else{

   echo 'Some error occured, Try again later.';
  }

如果我使用此逻辑,如果数据库查询失败,则仍会发送电子邮件。

问题3

$this->db->trans_start();
$this->email->send();
$this->model_users->add_temp_users($email_key);
$this->db->trans_complete();

if($this->db->trans_status() == FALSE){
 echo "Some error occured, try again later.";
}else{
 echo "An email has been sent to you. Click the link to activate your account.";
}

这里没有回滚。

如何正确运行此逻辑?

0 个答案:

没有答案