Cet article présente principalement les méthodes de traitement de sécurité et de traitement des transactions de PDO, qui ont une certaine valeur de référence. Les amis intéressés peuvent s'y référer.
La transaction est une fonction très importante dans le fonctionnement de la base de données. Elle vous permet de planifier une ou une série d'instructions SQL puis de les exécuter ensemble lors de l'exécution, si l'une d'elles est exécutée. En cas d'échec, vous. peut annuler toutes les opérations modifiées. Si l'exécution réussit, cette série d'opérations sera efficace de manière permanente pour résoudre le problème de désynchronisation lors de l'exploitation de la base de données. être effectué via des transactions. À l'heure actuelle, l'efficacité de l'exécution peut être considérablement améliorée
Le traitement des transactions a quatre caractéristiques : l'atomicité, la cohérence, l'indépendance et la durabilité. Toutes les bases de données ne prennent pas en charge le traitement des transactions. PDO fournit une prise en charge des transactions pour les bases de données capables d'effectuer le traitement des transactions.
1. Gestion des exceptions PDO
PDO::ATTR_ERRMODE
1) PDO::ATTR_ERRMODE//Ne pas signaler l'erreur (ignorer ) (0)
2) PDO::ERRMODE_WARNING
//Signaler les erreurs sous forme d'avertissements (1)
3) PDO::ERRMODE_EXCEPTION //Signaler les erreurs comme exceptions La façon de signaler une erreur (2)
<?php //默认是PDO::ATTR_ERRMODE 不报错误(忽略)(0),需要用errorCode()、errorInfo() try{ $pdo=new PDO("mysql:host=localhost;dbname=myapp","root",""); // $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING); $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); }catch (PDOException $e){ die("fail to connect db".$e->getMessage()); } $sql="INSERT INTO user VALUES(null,'dabao','26')"; try{ $res=$pdo->exec($sql); }catch (PDOException $e){ echo $e->getMessage(); } //$res=$pdo->exec($sql); //if($res){ // echo 'OK'; //}else{ // echo $pdo->errorCode(); // echo '<br/>'; // print_r($pdo->errorInfo()); //}
2. Méthode de prétraitement PDO
1) prepare() // Utilisé pour exécuter des instructions SQL de requête et renvoyer des objets PDOStatement
2) bindValue() // Lier la valeur à un paramètre correspondant et renvoyer une valeur booléenne
3) bindParam() //Lier les paramètres à l'espace réservé de requête correspondant et renvoyer une valeur booléenne
4) bindColumn() //Utilisé pour faire correspondre la colonne nom et un nom de variable spécifié
5) execute() // Exécute une instruction préparée et renvoie une valeur booléenne
6) rowCount() // Renvoie le nombre total de lignes affectées après l'utilisation des instructions d'opération d'ajout, de suppression, de modification et de vérification
<?php /** * ?号式的预处理语句,共有三种绑定方式 */ //1.连接数据库 try{ $pdo=new PDO("mysql:host=localhost;dbname=myapp","root",""); }catch (PDOException $e){ die("fail to connect db".$e->getMessage()); } //2.预处理的SQL语句 $sql="INSERT INTO users(id,name,age) VALUES(?,?,?)"; $stmt=$pdo->prepare($sql); //3.对?号的参数进行绑定 $id=null; $name="test103"; $age=103; //第一种绑定方式 //$stmt->bindValue(1,$id); //$stmt->bindValue(2,$name); //$stmt->bindValue(3,$age); //第二种绑定方式 //$stmt->bindParam(1,$id); //$stmt->bindParam(2,$name); //$stmt->bindParam(3,$age); //4.执行 //$stmt->execute(); //第三种绑定方式:直接执行数组 $stmt->execute(array($id,$name,$age)); echo $stmt->rowCount();
<?php /** * 别名式的预处理语句,共有三种绑定方式 */ //1.连接数据库 try{ $pdo=new PDO("mysql:host=localhost;dbname=myapp","root",""); }catch (PDOException $e){ die("fail to connect db".$e->getMessage()); } //2.预处理的SQL语句 $sql="INSERT INTO users(id,name,age) VALUES(:id,:name,:age)"; $stmt=$pdo->prepare($sql); //3.参数进行绑定 $id=null; $name="test203"; $age=23; //第一种绑定方式 //$stmt->bindValue("id",$id); //$stmt->bindValue("name",$name); //$stmt->bindValue("age",$age); //第二种绑定方式 //$stmt->bindParam("id",$id); //$stmt->bindParam("name",$name); //$stmt->bindParam("age",$age); //4.执行 //$stmt->execute(); //第三种绑定方式:直接执行数组 $stmt->execute(array("id"=>$id,"name"=>$name,"age"=>$age)); echo $stmt->rowCount();
<?php /** * 用预处理方式查询数据 */ //1.连接数据库 try{ $pdo=new PDO("mysql:host=localhost;dbname=myapp","root",""); }catch (PDOException $e){ die("fail to connect mysql".$e->getMessage()); } //2.预处理查询 $sql="SELECT id,name,age FROM users"; $stmt=$pdo->prepare($sql); //3.执行 $stmt->execute(); foreach($stmt as $val){ echo $val['id']."------".$val['name']."------".$val['age']."<br/>"; }
3. Introduction aux méthodes d'opération de traitement des transactions
1) startTransaction() //Ouvrir un objet ( faire un point de restauration)
2) commit()
//Commit transaction
3) rollBack() //Opération d'annulation de transaction
<?php //1.连接数据库 try{ $pdo=new PDO("mysql:host=localhost;dbname=myapp","root",""); $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); }catch (PDOException $e){ die("fail to connect db".$e->getMessage()); } //2.执行数据操作 try{ //开启事物 $pdo->beginTransaction(); $sql="insert into users(id,name,age) VALUES(?,?,?)"; $stmt=$pdo->prepare($sql); //传入参数 $stmt->execute(array(null,"test1","21")); $stmt->execute(array(null,"test2","22")); $stmt->execute(array(null,"test3","23")); //提交事物 $pdo->commit(); }catch (PDOException $e){ die("fail to execute".$e->getMessage()); //事物回滚 $pdo->roolback(); }
Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.
Recommandations associées :
phpMise en œuvre détaillée de la gestion des demandes à haute concurrence pour les achats urgents
phpComment obtenir l'utilisation de la mémoire CPU en temps réel dans Windows
Explication détaillée de la demi-recherche PHP cas d'algorithme
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!