完成(db查询和邮件)或无

时间:2014-05-17 11:00:49

标签: php email logic try-catch

我正在编写一些代码来停用用户帐户。提交表单后,我更新数据库并通过电子邮件通知用户确认停用成功。

但是,如果电子邮件无法发送,我不想更新数据库,如果更新数据库的查询失败,我不想发送电子邮件,这是全部或全部。

我该怎么做?尝试捕获?它甚至可能吗?你推荐什么?

//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();

由于

1 个答案:

答案 0 :(得分:0)

您可以尝试使用数据库事务。 algoritm的方案可以看起来:

START TRANSACTION
UPDATE
IF NO ERRORS IN TRANSACTION THEN
    IF SEND EMAIL THEN
        COMMIT TRANSACTION
    ELSE
        ROLLBACK TRANSACTION
ELSE
    ROLLBACK TRANSACTION