Les transactions avec MySQL et PHP
Une transaction est une unité de travail logique qui contient une ou
plusieurs instructions SQL. Les transactions sont des unités de travail
atomiques pouvant être validées ou annulées. Lorsqu’une transaction apporte
plusieurs modifications à la base de données, toutes les modifications
aboutissent lorsque la transaction est validée ou toutes les modifications
sont annulées lorsque la transaction est annulée.
Exemple concret
Si vous effectuez une transaction de transfert d’argent d’une banque à une
autre, à ce moment-là, si une interruption est due à Internet/Serveur ou à un
autre problème, la transaction reviendra alors à son stade initial et votre
argent sera remboursé à votre compte.
Dans ce tutoriel, nous allons utiliser les tables « Personnes » et
« Commandes » mentionnées ci-dessous.
mysql> SELECT * FROM personnes;
+------------+------------------+----------+
| P_ID | NOM | AGE |
+------------+------------------+----------+
| 1 | Alex Babtise | 22 |
| 2 | Eric Maxich | 30 |
| 3 | Yohan Suinol | 18 |
+------------+------------------+----------+
3 rows in set (0.00 sec)
mysql> SELECT * FROM commandes;
+------------+--------------+----------+
| C_ID | NUM_CMD | P_ID |
+------------+--------------+----------+
| 1 | 001259 | 2 |
| 2 | 005896 | 1 |
| 3 | 009671 | 3 |
+------------+--------------+----------+
3 rows in set (0.00 sec)
Pensez que vous devez ajouter « Thomas Suzik » en tant que nouvelle personne
avec sa commande. Vous exécuteriez les deux instructions INSERT suivantes.
INSERT INTO `personnes` (`p_id`, `nom`, `age`) VALUES (4, 'Thomas Suzik',
50);
INSERT INTO `commandes` (`c_id`, `num_cmd`, `p_id`) VALUES (8, '009741', 4);
Vous pouvez voir que dans la deuxième instruction, 4 est donné pour `P_ID`,
qui est la valeur de `P_ID` dans la première requête. Lorsque vous exécutez
ces deux instructions, supposez que la première échoue et que la deuxième
réussit.
Ensuite, la table `commandes` aura une ligne qui fait référence à une
personne dont l’ID est 4 et qui n’existe pas. Si nous avons exécuté ces deux
instructions dans une transaction MySQL, si la première instruction échoue,
la seconde instruction sera annulée, sans modification.
En PHP, nous pouvons exécuter une transaction en utilisant les fonctions
MySQLi comme ci-dessous.
<?php
$p_id = 4;
//se connecter à la base de données mysql
$conn = mysqli_connect('localhost', 'root', ' ', 'test_db');
mysqli_autocommit($conn, false);
$state = true;
$req1 = "INSERT INTO `personnes` (`p_id`, `nom`, `age`) VALUES ($p_id,
'Thomas Suzik', 50)";
$req2 = "INSERT INTO `commandes` (`c_id`, `num_cmd`, `p_id`) VALUES (8,
'009741', $p_id)";
$res = mysqli_query($conn, $req1);
if (!$res) {
$state = false;
echo "Error: " . mysqli_error($conn) . ".";
}
$res = mysqli_query($conn, $req2);
if (!$res) {
$state = false;
echo "Error: " . mysqli_error($conn) . ".";
}
if ($state) {
mysqli_commit($conn);
echo "Toutes les requêtes ont été exécutées avec succès";
} else {
mysqli_rollback($conn);
echo "Toutes les requêtes ont été annulées";
}
mysqli_close($conn);
?>
Lorsque vous exécutez la fonction mysqli_query(), le résultat est
immédiatement validé dans la base de données. En utilisant la fonction
mysqli_autocommit(), vous pouvez désactiver ce comportement afin que le
résultat ne soit pas validé de manière permanente dans la base de données
tant que vous ne l’ayez pas validé.
À la fin, si la variable « state » est true ( c’est a dire que, aucune erreur
ne s’est produite), nous validons les résultats dans la base de données de
manière permanente à l’aide de mysqli_commit(). Sinon, nous annulons les
résultats en utilisant la fonction mysqli_rollback().
QCM sur PHP – Les bases – Partie 1QCM sur PHP avec des réponses pour la
préparation des entretiens d’embauche, des tests en ligne, aux examens et aux
certifications. Ces questions et réponses…Lire plus
Création d’une table MySQL avec PDO
Connexion à une base de données MySQL avec PHP PDO
Accéder à une base de données MySQL avec PHP
Afficher les données d’une table MySQL avec PHP PDO
Insérer des données dans une table MySQL avec PHP PDO
Multiple Insertion avec PHP PDO
Mise à jour d’une table MySQL avec PHP PDO
Copier une table MySQL avec PHP
Supprimer une ligne d’une table MySQL en PHP PDO
Les transactions avec MySQL et PHP
Appel d’une procédure stockée MySQL avec PHP PDO
Afficher une image de type BLOB en PHP à partir d’une base de données
Vérifier si un émail existe déjà dans la base de données avec PHP
Vérifiez si le nom d’utilisateur existe déjà avec PHP
Authentification d’un utilisateur à l’aide de PDO et password_verify()
Comment faire un formulaire en PHP/MySQL?
QCMs qui pourraient vous intéresser :
Questions techniques sur MYSQL
QCM MySQL Corrigé – Optimisation de requêtes
QCM Base de données avec correction
QCM sur PHP
QCM Symfony
QCM HTML / CSS
QCM Java – Programmation Orientée Objet
QCM Python
QCM Cloud Computing
QCM Framework Spring
QCM Javascript
QCM jQuery
QCM Oracle
QCM sur GIT – Gestionnaire de version
QCM Linux – Gestion de processus
QCM Réseau
QCM Architecture des ordinateurs
QCM Securité informatique
QCM En Informatique Générale
QCM en C
QCM en C#
QCM sur l'algorithmique
QCM Word
QCM Excel
QCM PowerPoint
QCM Access

Mpdf 13

  • 2.
    Les transactions avecMySQL et PHP Une transaction est une unité de travail logique qui contient une ou plusieurs instructions SQL. Les transactions sont des unités de travail atomiques pouvant être validées ou annulées. Lorsqu’une transaction apporte plusieurs modifications à la base de données, toutes les modifications aboutissent lorsque la transaction est validée ou toutes les modifications sont annulées lorsque la transaction est annulée. Exemple concret Si vous effectuez une transaction de transfert d’argent d’une banque à une autre, à ce moment-là, si une interruption est due à Internet/Serveur ou à un autre problème, la transaction reviendra alors à son stade initial et votre argent sera remboursé à votre compte. Dans ce tutoriel, nous allons utiliser les tables « Personnes » et « Commandes » mentionnées ci-dessous. mysql> SELECT * FROM personnes; +------------+------------------+----------+ | P_ID | NOM | AGE | +------------+------------------+----------+ | 1 | Alex Babtise | 22 | | 2 | Eric Maxich | 30 | | 3 | Yohan Suinol | 18 |
  • 3.
    +------------+------------------+----------+ 3 rows inset (0.00 sec) mysql> SELECT * FROM commandes; +------------+--------------+----------+ | C_ID | NUM_CMD | P_ID | +------------+--------------+----------+ | 1 | 001259 | 2 | | 2 | 005896 | 1 | | 3 | 009671 | 3 | +------------+--------------+----------+ 3 rows in set (0.00 sec) Pensez que vous devez ajouter « Thomas Suzik » en tant que nouvelle personne avec sa commande. Vous exécuteriez les deux instructions INSERT suivantes. INSERT INTO `personnes` (`p_id`, `nom`, `age`) VALUES (4, 'Thomas Suzik', 50); INSERT INTO `commandes` (`c_id`, `num_cmd`, `p_id`) VALUES (8, '009741', 4); Vous pouvez voir que dans la deuxième instruction, 4 est donné pour `P_ID`, qui est la valeur de `P_ID` dans la première requête. Lorsque vous exécutez ces deux instructions, supposez que la première échoue et que la deuxième réussit. Ensuite, la table `commandes` aura une ligne qui fait référence à une personne dont l’ID est 4 et qui n’existe pas. Si nous avons exécuté ces deux instructions dans une transaction MySQL, si la première instruction échoue, la seconde instruction sera annulée, sans modification. En PHP, nous pouvons exécuter une transaction en utilisant les fonctions MySQLi comme ci-dessous. <?php $p_id = 4; //se connecter à la base de données mysql $conn = mysqli_connect('localhost', 'root', ' ', 'test_db'); mysqli_autocommit($conn, false); $state = true; $req1 = "INSERT INTO `personnes` (`p_id`, `nom`, `age`) VALUES ($p_id, 'Thomas Suzik', 50)"; $req2 = "INSERT INTO `commandes` (`c_id`, `num_cmd`, `p_id`) VALUES (8,
  • 4.
    '009741', $p_id)"; $res =mysqli_query($conn, $req1); if (!$res) { $state = false; echo "Error: " . mysqli_error($conn) . "."; } $res = mysqli_query($conn, $req2); if (!$res) { $state = false; echo "Error: " . mysqli_error($conn) . "."; } if ($state) { mysqli_commit($conn); echo "Toutes les requêtes ont été exécutées avec succès"; } else { mysqli_rollback($conn); echo "Toutes les requêtes ont été annulées"; } mysqli_close($conn); ?> Lorsque vous exécutez la fonction mysqli_query(), le résultat est immédiatement validé dans la base de données. En utilisant la fonction mysqli_autocommit(), vous pouvez désactiver ce comportement afin que le résultat ne soit pas validé de manière permanente dans la base de données tant que vous ne l’ayez pas validé. À la fin, si la variable « state » est true ( c’est a dire que, aucune erreur ne s’est produite), nous validons les résultats dans la base de données de manière permanente à l’aide de mysqli_commit(). Sinon, nous annulons les résultats en utilisant la fonction mysqli_rollback().
  • 6.
    QCM sur PHP– Les bases – Partie 1QCM sur PHP avec des réponses pour la préparation des entretiens d’embauche, des tests en ligne, aux examens et aux certifications. Ces questions et réponses…Lire plus Création d’une table MySQL avec PDO Connexion à une base de données MySQL avec PHP PDO Accéder à une base de données MySQL avec PHP Afficher les données d’une table MySQL avec PHP PDO Insérer des données dans une table MySQL avec PHP PDO Multiple Insertion avec PHP PDO Mise à jour d’une table MySQL avec PHP PDO Copier une table MySQL avec PHP Supprimer une ligne d’une table MySQL en PHP PDO Les transactions avec MySQL et PHP Appel d’une procédure stockée MySQL avec PHP PDO Afficher une image de type BLOB en PHP à partir d’une base de données Vérifier si un émail existe déjà dans la base de données avec PHP Vérifiez si le nom d’utilisateur existe déjà avec PHP Authentification d’un utilisateur à l’aide de PDO et password_verify() Comment faire un formulaire en PHP/MySQL? QCMs qui pourraient vous intéresser : Questions techniques sur MYSQL QCM MySQL Corrigé – Optimisation de requêtes QCM Base de données avec correction QCM sur PHP QCM Symfony QCM HTML / CSS
  • 7.
    QCM Java –Programmation Orientée Objet QCM Python QCM Cloud Computing QCM Framework Spring QCM Javascript QCM jQuery QCM Oracle QCM sur GIT – Gestionnaire de version QCM Linux – Gestion de processus QCM Réseau QCM Architecture des ordinateurs QCM Securité informatique QCM En Informatique Générale QCM en C QCM en C# QCM sur l'algorithmique QCM Word QCM Excel QCM PowerPoint QCM Access