我正在编写一些代码来停用用户帐户。提交表单后,我更新数据库并通过电子邮件通知用户确认停用成功。
但是,如果电子邮件无法发送,我不想更新数据库,如果更新数据库的查询失败,我不想发送电子邮件,这是全部或全部。
我该怎么做?尝试捕获?它甚至可能吗?你推荐什么?
//DEACTIVATE ACCOUNT & LOG OUT ALL SESSIONS
$db->update("users", "id", "=", $user->data()->id, array(
"active" => 0,
"logout_all" => 1
));
//EMAIL USER
$mail->send(
"user_deactivated",
array(
"to" => $user->data()->email,
"subject" => "Account Deactivated",
"message" => null,
"from" => "noreply@domain.com"
),
array(
"name" => $user->data()->full_name
)
);
//LOG USER OUT
$user->logout();
由于
答案 0 :(得分:0)
您可以尝试使用数据库事务。 algoritm的方案可以看起来:
START TRANSACTION
UPDATE
IF NO ERRORS IN TRANSACTION THEN
IF SEND EMAIL THEN
COMMIT TRANSACTION
ELSE
ROLLBACK TRANSACTION
ELSE
ROLLBACK TRANSACTION