2014-05-17 3 views
0

J'écris du code pour désactiver un compte d'utilisateur. Lorsque le formulaire est soumis, je mets à jour la base de données et envoie un courriel à l'utilisateur confirmant que la désactivation a été réussie. Toutefois, si le courrier électronique ne parvient pas à envoyer, je ne souhaite pas mettre à jour la base de données et si la requête de mise à jour de la base de données échoue, je ne veux pas envoyer l'email, c'est tout ou rien.Terminé (requête db et courrier) ou aucun

Comment est-ce que je devrais faire ceci? Essayez les prises? Est-ce même possible? Que recommandez-vous?

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

Merci

Répondre

0

Vous pouvez essayer d'utiliser des transactions de base de données. Schéma d'algoritm peut regarder:

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

Merci beaucoup! – itsliamoco