2014-05-17 20 views
0

我正在寫一些代碼來停用用戶帳戶。提交表格時,我更新數據庫並通過電子郵件向用戶確認停用成功。完成(分貝查詢和郵件)或沒有

但是,如果電子郵件發送失敗,我不想更新數據庫,如果更新數據庫的查詢失敗,我不想發送電子郵件,這是全部或全部。

我該怎麼做?嘗試捕捉?它甚至有可能嗎?你有什麼建議?

//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" => "[email protected]" 
    ), 
    array(
     "name" => $user->data()->full_name 
    ) 
); 

//LOG USER OUT 
$user->logout(); 

感謝

回答

0

你可以嘗試使用數據庫事務。算法的計劃可以看起來如下:

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

非常感謝! – itsliamoco