Est-il possible d'effectuer des transactions de base de données mysql avec php et rollbacks?
-
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.