Maison >développement back-end >Problème PHP >Comment supprimer une transaction en php

Comment supprimer une transaction en php

藏色散人
藏色散人original
2022-11-22 09:19:291456parcourir

Comment supprimer les transactions PHP : 1. Utilisez la méthode "autocommit(false)" pour désactiver la soumission automatique de la base de données ; 2. Lorsque toutes les instructions d'opération réussissent, soumettez-les à la base de données via "commit()". l'opération échoue, utilisez la méthode "rollback()" pour annuler la suppression.

Comment supprimer une transaction en php

L'environnement d'exploitation de ce tutoriel : système Windows 7, PHP version 8.1, ordinateur Dell G3.

Comment supprimer une transaction php ?

php transaction traitement transaction

Les transactions MySQL sont principalement utilisées pour traiter des données avec des opérations volumineuses et une grande complexité. Par exemple, dans le système de gestion du personnel, si vous supprimez une personne, vous devez supprimer les informations de base de la personne, ainsi que les informations liées à la personne, telles que la boîte aux lettres, les articles, etc. Les instructions d'opération constituent une transaction !

Dans MySQL, seules les bases de données ou les tables qui utilisent le moteur de base de données Innodb prennent en charge les transactions

Le traitement des transactions peut être utilisé pour maintenir l'intégrité de la base de données et garantir que les lots d'instructions SQL sont tous exécutés ou pas exécutés du tout

Transactions sont utilisés Gérer les instructions d'insertion, de mise à jour, de suppression

De manière générale, les transactions doivent remplir 4 conditions (ACID) : Atomicité (atomicité), Cohérence (stabilité), Isolation (isolement), Durabilité (persistance)

1 . Un ensemble de transactions réussit ou est retiré.

2. Stabilité : S'il y a des données illégales (contraintes de clé étrangère, etc.), la transaction sera retirée.

3. Isolement : les transactions s'exécutent de manière indépendante. Si le résultat d'une transaction affecte d'autres transactions, les autres transactions seront retirées. L’isolation à 100 % des transactions nécessite de sacrifier la vitesse.

4. Durabilité : une fois qu'une transaction est validée, ses modifications dans les données de la base de données sont permanentes. Même si la base de données échoue, cela ne devrait avoir aucun impact sur celle-ci.

Exécutez le programme suivant

$mysqli = new mysqli('localhost','root','mayi1991','mysqldemo');
if($mysqli->connect_error){
    die('数据库连接错误'.$mysqli->connect_error);
}
$sql1 = "update account set balance = balance - 2 where id = 1";
//这里故意写错指令中的balance1属性
$sql2 = "update account set balance1 = balance + 2 where id = 2";        
$result1 = $mysqli->query($sql1);
$result2 = $mysqli->query($sql2);
if(!$result1 || !$result2){
    die('操作错误'.$mysqli->error);
}else{
    die('操作成功');
}
$mysqli->close();

Bien que le code ci-dessus signale une erreur, dans la base de données, le solde avec id=1 a été modifié ; cela posera des problèmes

Nous voulons changer en même temps, si ; il y a une erreur, cela ne changera pas ; pour le moment, nous avons besoin d'un "contrôle des transactions" pour assurer la "cohérence"

La méthode que nous devons utiliser est autocommit() commit();

$mysqli = new mysqli('localhost','root','mayi1991','mysqldemo');
if($mysqli->connect_error){
    die('数据库连接错误'.$mysqli->connect_error);
}
//关闭数据库自动提交
$mysqli->autocommit(false);
$sql1 = "update account set balance = balance - 2 where id = 1";
//这里故意写错属性balance1
$sql2 = "update account set balance1 = balance + 2 where id = 2";
$result1 = $mysqli->query($sql1);
$result2 = $mysqli->query($sql2);
if(!$result1 || !$result2){
    die('操作错误'.$mysqli->error);
    $mysqli->rollback();    //事务回退
}else{
    //操作全部正确后再提交
    $mysqli->commit();
}
$mysqli->close();

Utilisez d'abord la méthode autocommit(false), désactivez la soumission automatique de la base de données, puis lorsque toutes les instructions d'opération réussissent, commit() est soumise à la base de données

Si l'opération échoue, nous utilisons la méthode rollback() pour lancer ; dos.

Apprentissage recommandé : "

Tutoriel vidéo PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn