Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Transaktionsverarbeitungsmethode basierend auf PDO

PHP-Transaktionsverarbeitungsmethode basierend auf PDO

墨辰丷
墨辰丷Original
2018-05-19 10:40:121485Durchsuche

Dieser Artikel stellt hauptsächlich die auf PDO basierende Transaktionsverarbeitungsmethode in PHP vor und analysiert die relevanten Implementierungstechniken von PDO unter Verwendung von PDO für Transaktionsvorgänge in Form von Beispielen. Freunde in Not können sich auf

Beispiele 1:

try {} 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();
}

Verwandte Empfehlungen:

PHP versteht die PDO-Datenbankabstraktionsschicht, phppdo-Datenbankabstraktion_PHP-Tutorial

PHP verwendet die PDO-Methode im Detail, phppdo erklärt ausführlich_PHP-Tutorial

PHP implementiert die MySQL-Datenbankoperationsklasse von PDO, phppdomysql-Datenbank_PHP-Tutorial

Das obige ist der detaillierte Inhalt vonPHP-Transaktionsverarbeitungsmethode 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