Maison > développement back-end > Problème PHP > Comment résoudre le problème que PHP ne peut pas appeler commit

Comment résoudre le problème que PHP ne peut pas appeler commit

尊渡假赌尊渡假赌尊渡假赌
Libérer: 2023-06-19 10:53:08
original
1859 Les gens l'ont consulté

La solution pour que PHP ne puisse pas appeler commit est la suivante : 1. Assurez-vous que la transaction PDO "try {$pdo->beginTransaction();}", "$pdo->commit( ) ;"; 2. Vérifiez s'il y a des problèmes de table de base de données ou de connexion ; 3. Utilisez un moteur de stockage qui prend en charge les transactions. Dans MySQL, seuls les moteurs de stockage InnoDB et NDB prennent en charge les transactions.

Comment résoudre le problème que PHP ne peut pas appeler commit

Le système d'exploitation pour ce tutoriel : système Windows 10, version php8.1.3, ordinateur Dell G3.

L'appel de `commit()` lors de l'utilisation de PHP ne peut pas prendre effet, généralement parce que le mécanisme de gestion des transactions n'est pas utilisé correctement.

Solution :

1. Assurez-vous d'avoir ouvert la transaction AOP.

```
try {
    $pdo->beginTransaction();
    // your database operations
} catch (PDOException $e) {
    $pdo->rollback();
    throw $e;
}
$pdo->commit();
```
Copier après la connexion

2 Vérifiez s'il y a une table de base de données ou un problème de connexion

3. utilisent le moteur de stockage de transactions pris en charge. Dans MySQL, seuls les moteurs de stockage InnoDB et NDB prennent en charge les transactions.

Impact :

Si l'appel à `commit()` n'est pas valide, cela empêchera la validation de la transaction, ce qui signifie que toutes les modifications apportées à la base de données sera annulé, conduisant à des résultats erronés. Dans le même temps, vous ne pouvez pas garantir la cohérence des données et perdre les avantages offerts par le niveau d’isolation des transactions.

Exemple de code :

L'exemple de code suivant montre comment activer correctement les transactions PDO et valider les modifications à l'aide de `commit()` :

```
<?php
try {
    $dbh = new PDO(&#39;mysql:host=localhost;dbname=test&#39;, &#39;username&#39;, &#39;password&#39;);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $dbh->beginTransaction();
    $sth = $dbh->prepare(&#39;UPDATE users SET email = :email WHERE id = :id&#39;);
    $sth->bindParam(&#39;:id&#39;, $id);
    $sth->bindParam(&#39;:email&#39;, $email);
    $id = 1;
    $email = &#39;test@example.com&#39;;
    $sth->execute();
    $id = 2;
    $email = &#39;test2@example.com&#39;;
    $sth->execute();
    $dbh->commit();
} catch (PDOException $e) {
    $dbh->rollback();
    echo &#39;Error: &#39; . $e->getMessage();
}
```
Copier après la connexion

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:
php
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