我有一个表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.";
}
这里没有回滚。
如何正确运行此逻辑?