Maison > développement back-end > tutoriel php > Comment utiliser la gestion des transactions pour assurer la cohérence des données en PHP ?

Comment utiliser la gestion des transactions pour assurer la cohérence des données en PHP ?

WBOY
Libérer: 2024-05-06 17:06:01
original
593 Les gens l'ont consulté

La gestion des transactions en PHP maintient la cohérence des données en garantissant l'atomicité des opérations de base de données. Il permet d'effectuer des opérations au sein d'une transaction et de valider les modifications en cas de réussite, ou d'annuler les modifications en cas d'échec. Vous pouvez tirer parti de la gestion des transactions en effectuant les étapes suivantes dans l'ordre : démarrer une transaction, effectuer une opération, valider la transaction ou annuler la transaction. Cela garantit que toutes les opérations réussissent ou que la base de données est restaurée dans l'état dans lequel elle se trouvait au début de la transaction.

Comment utiliser la gestion des transactions pour assurer la cohérence des données en PHP ?

Utilisez la gestion des transactions en PHP pour assurer la cohérence des données

Dans une base de données relationnelle, une transaction est un ensemble d'opérations atomiques, soit toutes soumises avec succès, soit toutes restaurées à l'état avant l'opération. Ceci est essentiel pour maintenir l’intégrité et la cohérence des données. La gestion des transactions en PHP vous permet de contrôler l'atomicité des opérations de base de données, garantissant que les données restent intactes en toutes circonstances.

Démarrer la transaction

Pour démarrer une transaction, vous pouvez utiliser la méthode beginTransaction() : beginTransaction() 方法:

1

$conn->beginTransaction();

Copier après la connexion

执行操作

在事务内,你可以执行任何数据库操作,例如插入、更新或删除数据:

1

2

3

4

$stmt = $conn->prepare("INSERT INTO users (name, email) VALUES (?, ?)");

$stmt->bindParam(1, $name);

$stmt->bindParam(2, $email);

$stmt->execute();

Copier après la connexion

提交事务

如果所有操作成功,可以通过调用 commit() 方法提交事务:

1

$conn->commit();

Copier après la connexion

这样将把所有更改永久地写入数据库。

回滚事务

如果任何操作失败,可以通过调用 rollBack()

1

$conn->rollBack();

Copier après la connexion

Effectuer une opération

Au sein d'une transaction, vous pouvez effectuer n'importe quelle opération de base de données telle que comme insérer, mettre à jour ou supprimer des données :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

try {

    $conn->beginTransaction();

 

    // 插入用户

    $stmt = $conn->prepare("INSERT INTO users (name, email) VALUES (?, ?)");

    $stmt->bindParam(1, $name);

    $stmt->bindParam(2, $email);

    $stmt->execute();

 

    // 获取用户 ID

    $userId = $conn->lastInsertId();

 

    // 插入订单

    $stmt = $conn->prepare("INSERT INTO orders (user_id, product_id) VALUES (?, ?)");

    $stmt->bindParam(1, $userId);

    $stmt->bindParam(2, $productId);

    $stmt->execute();

 

    $conn->commit();

} catch (PDOException $e) {

    $conn->rollBack();

}

Copier après la connexion

Commit la transaction

Si toutes les opérations réussissent, vous pouvez valider la transaction en appelant la méthode commit() : 🎜rrreee🎜Cela sera permanent écrire toutes les modifications dans la base de données. 🎜🎜🎜Rollback transaction🎜🎜🎜Si une opération échoue, la transaction peut être annulée en appelant la méthode rollBack() : 🎜rrreee🎜Cela annulera toutes les modifications non validées et restaurera la base de données au début de l'état de la transaction à ce moment-là. 🎜🎜🎜Cas pratique : Création d'utilisateurs et de commandes🎜🎜🎜Supposons que nous ayons une table d'utilisateurs et une table de commandes, et que nous souhaitions créer une commande en même temps lors de la création d'un utilisateur. Nous pouvons utiliser la gestion des transactions pour garantir que les deux opérations réussissent ou sont annulées : 🎜rrreee🎜 Si la création d'un utilisateur ou la création d'une commande échoue, la transaction sera annulée et aucune modification ne sera apportée à la base de données. 🎜

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