Maison >développement back-end >tutoriel php >Introduction détaillée au traitement des transactions dans PDO

Introduction détaillée au traitement des transactions dans PDO

黄舟
黄舟original
2017-04-28 17:47:112427parcourir

Introduction détaillée au traitement des transactions dans PDO

Une transaction est composée d'une séquence d'instructions de requête et/ou de mise à jour. Utilisez start et start transaction pour démarrer une transaction, rollback pour annuler la transaction et commit pour valider la transaction. Après le démarrage d'une transaction, il peut y avoir plusieurs requêtes SQL ou instructions de mise à jour. Après que chaque SQL soit soumis pour exécution, il doit également y avoir des instructions pour déterminer si elle est exécutée correctement afin de déterminer s'il faut revenir en arrière à l'étape suivante si toutes sont exécutées. correctement, la transaction est finalement validée. Une fois qu'une transaction est annulée, la base de données reste dans l'état dans lequel elle se trouvait avant le démarrage de la transaction. C'est comme si l'on quittait un fichier modifié sans l'enregistrer, l'apparence originale du fichier serait conservée. Par conséquent, une transaction peut être considérée comme une opération atomique. Le SQL de la transaction est exécuté entièrement ou pas du tout.

Dans les deux premiers articles "Méthode 1 de gestion des erreurs dans PDO - méthode errorCode() ", "Méthode 2 de gestion des erreurs dans PDO - méthode errorInfo() 》Nous avons introduit la méthode de gestion des erreurs dans PDO, puis introduisons en détail le traitement des transactions dans PDO~

La fonction de traitement des transactions peut également être implémentée dans PDO, et sa méthode d'application est la suivante :

(1) Démarrez la méthode transaction—beginTransaction().

La méthode startTransaction() désactivera le mode de validation automatique jusqu'à ce que la transaction soit validée ou annulée.

(2) Commit transaction - méthode commit()

La méthode commit() termine l'opération de soumission de transaction et renvoie true avec succès, sinon elle renvoie false.

(3) Annulation de transaction - méthode rollBack()

La méthode rollBack() effectue l'opération d'annulation de la transaction.

Ajoutez des données à la base de données via les méthodes préparer() et exécuter() et assurez-vous que les données peuvent être correctement ajoutées à la base de données via le mécanisme de traitement des transactions. Les étapes spécifiques sont les suivantes :

Créez un fichier php, définissez d'abord les paramètres de connexion à la base de données, créez une instruction try{...}catch{...}, instanciez le constructeur PDO dans l'instruction try{}, terminez la connexion avec la base de données, et démarrez la transaction via la méthode beginTransaction(), puis définissez l'instruction INSERT, obtenez les données soumises dans le formulaire via la méthode $_POST[], ajoutez des données à la base de données via les méthodes prepare() etexecute() et terminez l'opération de soumission de la transaction via la méthode commit(0, et enfin catch{} Le message d'erreur est renvoyé dans l'instruction et l'opération d'annulation de la transaction est effectuée via la méthode rollBack(). Le code spécifique est le suivant :

<form action="3.php" name="form1" method="post">
    用户名:<input type="text" name="username">
    密码:  <input type="password" name="password">
    <input type="submit" name="Submit" value="提交">
</form>
<?php
header("Content-Type:text/html; charset=utf-8");    //设置页面的编码格式
$name =$_POST[&#39;username&#39;];
$password =$_POST[&#39;password&#39;];
if($_POST[&#39;username&#39;]!=""&&$_POST[&#39;password&#39;]!=""){
    $dbms = "mysql";                                  // 数据库的类型
    $dbName ="php_cn";                                //使用的数据库名称
    $user = "root";                                   //使用的数据库用户名
    $pwd = "root";                                    //使用的数据库密码
    $host = "localhost";                              //使用的主机名称
    $dsn  = "$dbms:host=$host;dbname=$dbName";
try{
    $pdo=new PDO($dsn,$user,$pwd);//初始化一个PDO对象,就是创建了数据库连接对象$pdo
    $pdo -> beginTransaction();   //开始事务
    $query="insert into `user`(username,password) VALUES (&#39;$name&#39;,&#39;$password&#39;)";//需要执行的sql语句
    $res=$pdo->prepare($query);//准备查询语句
    $res->execute();            //执行查询语句,并返回结果集
    if($res->errorCode()){
        echo "数据添加成功";
    }else{
        echo "数据添加失败";
    }
    $pdo->commit();            //执行事务的提交操作
}catch (PDOException $e){
    die("Error!:".$e->getMessage().&#39;<br>&#39;);
 $pdo -> rollBack();             //执行事务的回滚
}
}
?>

Le résultat final est le suivant :

Introduction détaillée au traitement des transactions dans PDO

Après avoir lu le traitement des transactions que nous avons présenté ci-dessus, pensez-vous que c'est très simple Vous pouvez contacter ? nous pour consolider ce que vous avez appris. Dans le prochain article, nous continuerons à présenter le processus de stockage dans PDO. Veuillez lire " Introduction détaillée aux procédures stockées dans PDO》 !

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