Exemple de code de transaction MySQL d'opération PHP

怪我咯
Libérer: 2023-03-13 19:02:01
original
1128 Les gens l'ont consulté

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 et également supprimer les informations liées à la personne, telles que la boîte aux lettres, les articles, etc. De cette façon, ces opérations de base de donnéesLe relevé constitue une transaction !

Cet article présente principalement la méthode d'exploitation des transactions MySQL par PHP et analyse en détail les caractéristiques ACID sous forme d'exemples. Il a une bonne valeur de référence. Les amis dans le besoin peuvent s'y référer

. Les exemples de cet article décrivent comment PHP gère les transactions MySQL et sont partagés avec vous pour votre référence. La méthode spécifique est la suivante :

De manière générale, les transactions doivent avoir des caractéristiques ACID. Le soi-disant ACID s'écrit avec les premières lettres des quatre mots Atomic (atomicité), Cohérent (cohérence), Isolé (isolement) et Durable (persistance). Prenons « virement bancaire » comme exemple pour expliquer leur signification. :

① Atomicité : Les instructions qui composent une transaction forment une unité logique, et seule une partie de celle-ci ne peut pas être exécutée. Autrement dit, une transaction est la plus petite unité indivisible. Par exemple : lors du processus de virement bancaire, le montant du transfert doit être soustrait d'un compte et ajouté à un autre compte en même temps. Il n'est pas raisonnable de modifier un seul compte.
② Cohérence : la base de données est cohérente avant et après l'exécution du traitement des transactions. Autrement dit, la transaction doit transformer correctement l'état du système. Par exemple : lors du processus de virement bancaire, soit le montant du virement est transféré d'un compte à un autre, soit les deux comptes restent inchangés, et il n'y a pas d'autre situation.
③ Isolement : une transaction n'a aucun impact sur une autre transaction. C'est-à-dire qu'il est impossible pour une transaction de voir une transaction dans un état incomplet. Par exemple, lors d'un virement bancaire, avant que la transaction de transfert ne soit soumise, une autre transaction de transfert ne peut être qu'en attente.
④ Durabilité : Les effets du traitement des transactions peuvent être enregistrés de manière permanente. À l’inverse, les transactions doivent être capables de résister à toutes les pannes, y compris les pannes de serveur, de processus, de communication, de support, etc. Par exemple : lors du processus de virement bancaire, l'état du compte après le virement doit être enregistré.

En PHP, mysqli a bien encapsulé les opérations associées aux transactions mysql. L'exemple suivant :

Le code est le suivant :

$sql1 = "update User set ScoreCount = ScoreCount +10 where ID= '123456'";
$sql2 = "update ScoreDetail  set FScore = 300 where ID= '123456'";
$sql3 = "insert into  ScoreDetail ID,Score) values ('123456',60)";
$mysqli = new mysqli('localhost','root','','DB_Lib2Test');
$mysqli->autocommit(false);//开始事物
$mysqli->query($sql1);
$mysqli->query($sql2);
if(!$mysqli->errno){
  $mysqli->commit();
  echo 'ok';
}else{
 echo 'err';
  $mysqli->rollback();
}
Copier après la connexion

Ici, nous utilisons la série php mysql de fonctions pour effectuer des transactions.

Le code est le suivant :

$sql1 = "update User set ScoreCount = ScoreCount +10 where ID= '123456'";
$sql2 = "update ScoreDetail  set FScore = 300 where ID= '123456'";
$sql3 = "insert into  ScoreDetail ID,Score) values ('123456',60)";
$conn = mysql_connect('localhost','root','');
mysql_select_db('DB_Lib2Test');
mysql_query('start transaction');
//mysql_query('SET autocommit=0');
mysql_query($sql1);
mysql_query($sql2);
if(mysql_errno ()){
    mysql_query('rollback');
    echo 'err';
}else{
    mysql_query('commit');
    echo 'ok';
}
// mysql_query('SET autocommit=1');
// mysql_query($sql3);
Copier après la connexion

Notez ici :

MyISAM : ne prend pas en charge les transactions et est utilisé pour les programmes en lecture seule pour améliorer les performances
InnoDB : prend en charge les transactions ACID, les verrous au niveau des lignes et la concurrence
Berkeley DB : prend en charge les transactions

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!