Est-il possible d'effectuer des transactions de base de données mysql avec php et rollbacks?

StackOverflow https://stackoverflow.com/questions/934254

  •  06-09-2019
  •  | 
  •  

Question

exemple: faire un transfert de paiement de l'utilisateur A à l'utilisateur B. Compte d'utilisateur A: -10 USD Compte d'utilisateur B: + 10 USD

s'il y a une transaction, et quelque chose va mal, tout est annulé. Ainsi, les transactions, il ne se produira pas ce compte de l'utilisateur A obtient diminué de 10, alors que compte utilisateur B ne soit pas augmenté de 10.

Je sais que les gens utilisent Java des transactions et rollbacks partout. Mais je ne l'ai jamais entendu parler de PHP gars faire.

Pas de solution correcte

Autres conseils

$db = new mysqli("localhost", "", "", "");
$db->autocommit(FALSE);
if ($db->query("INSERT ..."))
    $db->commit();
else
    $db->rollback();

Assurez-vous que vos tables utilisent le moteur InnoDB. MyISAM ne supporte pas les transactions

Mise à jour de commentaires :

InnoDB est l'un des deux moteurs de stockage principaux utilisés par MySQL, l'autre étant MyISAM.

MySQL vient avec le soutien de InnoDB compilé par défaut et en fait, il faut un certain effort pour le désactiver.

Je ne l'ai jamais entendu parler de MySQL avec InnoDB désactivé même par moins cher des Hébergeurs.

Si vous utilisez pdo, il a également le soutien de la transaction

http://us2.php.net/manual/en/pdo .begintransaction.php

comme déjà dit, assurez-vous d'utiliser le moteur de stockage InnoDB.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top