Heim  >  Artikel  >  Backend-Entwicklung  >  Beispielcode-Sharing zur Implementierung der Transaktionsverarbeitung in PHP basierend auf PDO

Beispielcode-Sharing zur Implementierung der Transaktionsverarbeitung in PHP basierend auf PDO

黄舟
黄舟Original
2017-07-21 15:56:351213Durchsuche

Dieser Artikel stellt hauptsächlich die auf PDO basierende Transaktionsverarbeitungsmethode in PHP vor und analysiert die zugehörigen Implementierungstechniken von PDO unter Verwendung von PDO für Transaktionsoperationen in Form von Beispielen.

Die Beispiele in diesem Artikel beschreiben die Implementierung einer PDO-basierten Transaktionsverarbeitungsmethode durch PHP. Teilen Sie es wie folgt als Referenz mit allen:

Beispiel 1:

versuchen Sie {} Catch () {} Form


<?php
$dsn = &#39;mysql:dbname=cheyun_cms;host=127.0.0.1&#39;;
$user = &#39;root&#39;;
$password = &#39;111111&#39;;
//采用预处理+事务处理执行SQL操作
//1.连接数据库
try {
  $pdo = new PDO($dsn, $user, $password);
  $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
  die("数据库连接失败".$e->getMessage());
}
//2.执行数据操作
try{
  //开启事物,此时会关闭自动提交
  $pdo->beginTransaction();
  $sql = "insert into cy_log (logid, value, action, file) values (?, ?, ?, ?)";
  $stmt = $pdo->prepare($sql);
  //传入参数
  $stmt->execute(array(null,"test4","w",11));
  $stmt->execute(array(null,"test5","w",11));
  $stmt->execute(array(null,"test3","w",11));
  //提交事物,并且 数据库连接返回到自动提交模式
  $pdo->commit();
}catch(PDOException $e){
  echo &#39;执行失败&#39;.$e->getMessage();
  //如果数据库被设置成自动提交模式,rollback 在回滚事务之后将恢复自动提交模式。
  //包括 MySQL 在内的一些数据库, 当在一个事务内有类似删除或创建数据表等 DLL 语句时,会自动导致一个隐式地提交。
  //隐式地提交将无法回滚此事务范围内的任何更改。即 DDL 语句无法回滚
  $pdo->rollback();
}

Beispiel 2:

if…else…form


<?php
$dsn = &#39;mysql:dbname=cheyun_cms;host=127.0.0.1&#39;;
$user = &#39;root&#39;;
$password = &#39;111111&#39;;
//采用预处理+事务处理执行SQL操作
//1.连接数据库
try {
  $pdo = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
  die("数据库连接失败".$e->getMessage());
}
//2.执行数据操作
//开启事物
$pdo->beginTransaction();
$sql = "insert into cy_log (logid, value, action, file) values (?, ?, ?, ?)";
$stmt = $pdo->prepare($sql);
$datalist = array(
  array(null,"test9","w",11),
  array(null,"test10","w",11),
  array(null,"test11","w",11)
);
//是否提交标志位
$isCommit = true;
foreach($datalist as $data){
  $stmt->execute($data);
  if($stmt->errorCode()>0){
    //回滚
    $pdo->rollback();
    $isCommit = false;
    break;
  }
}
if($isCommit){
  //提交事物
  $pdo->commit();
}

Hinweis:

Die Datentabelle erfordert den InnoDB-Typ

Das obige ist der detaillierte Inhalt vonBeispielcode-Sharing zur Implementierung der Transaktionsverarbeitung in PHP basierend auf PDO. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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