Maison > développement back-end > tutoriel php > Méthodes de traitement de sécurité et de traitement des transactions PDO

Méthodes de traitement de sécurité et de traitement des transactions PDO

墨辰丷
Libérer: 2023-03-28 15:12:01
original
1235 Les gens l'ont consulté

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,&#39;dabao&#39;,&#39;26&#39;)"; 
try{ 
  $res=$pdo->exec($sql); 
}catch (PDOException $e){ 
  echo $e->getMessage(); 
} 
//$res=$pdo->exec($sql); 
//if($res){ 
//  echo &#39;OK&#39;; 
//}else{ 
//  echo $pdo->errorCode(); 
//  echo &#39;<br/>&#39;; 
//  print_r($pdo->errorInfo()); 
//}
Copier après la connexion

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();
Copier après la connexion

<?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();
Copier après la connexion

<?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[&#39;id&#39;]."------".$val[&#39;name&#39;]."------".$val[&#39;age&#39;]."<br/>"; 
}
Copier après la connexion

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(); 
}
Copier après la connexion

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!

É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