PDO-Sicherheitsverarbeitungs- und Transaktionsverarbeitungsmethoden

墨辰丷
Freigeben: 2023-03-28 15:12:01
Original
1217 Leute haben es durchsucht

In diesem Artikel werden hauptsächlich die Sicherheitsverarbeitungs- und Transaktionsverarbeitungsmethoden von PDO vorgestellt, die einen gewissen Referenzwert haben.

Transaktion ist eine sehr wichtige Funktion beim Betrieb der Datenbank. Sie ermöglicht es Ihnen, eine oder mehrere SQL-Anweisungen zu planen und diese dann zusammen auszuführen Wenn die Ausführung erfolgreich ist, können Transaktionen mit großen Datenmengen das Problem der Nichtsynchronisation lösen Die Ausführungseffizienz kann derzeit durch Transaktionen erheblich verbessert werden.

Die Transaktionsverarbeitung weist vier Merkmale auf: Atomizität, Konsistenz, Unabhängigkeit und Haltbarkeit. Nicht alle Datenbanken unterstützen die Transaktionsverarbeitung. PDO bietet Transaktionsunterstützung für Datenbanken, die eine Transaktionsverarbeitung durchführen können.

1. PDO-Ausnahmebehandlung
PDO::ATTR_ERRMODE

1) PDO::ATTR_ERRMODE//Keinen Fehler melden ( ignorieren) (0)

2) PDO::ERRMODE_WARNING
//Fehler als Warnungen melden (1)

3) PDO::ERRMODE_EXCEPTION //Bericht Fehler als Ausnahmen Der Weg, einen Fehler zu melden (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()); 
//}
Nach dem Login kopieren

2. PDO-Vorverarbeitungsmethode

1) Prepare() // Wird zum Ausführen von Abfrage-SQL-Anweisungen und zum Zurückgeben von PDOStatement-Objekten verwendet

2) bindValue() // Bindet den Wert an einen entsprechenden Parameter und gibt einen booleschen Wert zurück

3) bindParam() //Binden Sie die Parameter an den entsprechenden Abfrageplatzhalter und geben Sie einen booleschen Wert zurück

4) bindColumn() //Wird zum Abgleichen des Spaltennamens verwendet und ein angegebener Der Variablenname

5)execute() // Eine vorbereitete vorbereitete Anweisung ausführen und einen booleschen Wert zurückgeben

6) rowCount() // Zurück zu use Gesamtzahl der betroffenen Zeilen nach dem Hinzufügen, Löschen, Ändern und Überprüfen von Operationsanweisungen

<?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();
Nach dem Login kopieren

<?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();
Nach dem Login kopieren

<?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/>"; 
}
Nach dem Login kopieren

3. Einführung in die Transaktionsverarbeitungsmethoden
1) beginTransaction() //Eine Transaktion starten (einen Rollback-Punkt erstellen)

2) commit()
//Transaktion festschreiben

3) rollBack() //Transaktions-Rollback-Vorgang

<?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(); 
}
Nach dem Login kopieren

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein.


Verwandte Empfehlungen:

phpDetaillierte Implementierung der Handhabung von Anfragen mit hoher Parallelität für Eilkäufe

phpSo erhalten Sie die Echtzeit-CPU-Speicherauslastung in Windows

Detaillierte Erklärung der PHP-Halbsuche Algorithmusfall

Das obige ist der detaillierte Inhalt vonPDO-Sicherheitsverarbeitungs- und Transaktionsverarbeitungsmethoden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!