PHP学习笔记【四】之《数据库抽象层PDO---PDO事务处理》

本文介绍了PHP中的PDO扩展如何处理数据库操作中的错误,并演示了如何使用PDO进行事务处理以确保数据的一致性和安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、PDO错误处理模式

<?php 
/*
 PDO::ERRMODE_SLIENT:默认模式,静默模式
 PDO::ERRMODE_WARNING:警告模式
 PDO::ERRMODE_EXCEPTION:异常模式
 */
try{
   $pdo=new PDO('mysql:host=localhost;dbname=my_db','root','');
   $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   $sql='SELECT * FROM noneTable';
   $pdo->query($sql);
   echo $pdo->errorCode();
   echo '<br/>';
   print_r($pdo->errorInfo());
}catch(PDOException $e){
   echo $e->getMessage();
}
?>

二、PDO事务处理
这里写图片描述

<?php 
header('content-type:text/html;charset=utf-8');
try{
   $dsn='mysql:host=localhost;dbname=my_db';
   $username='root';
   $passwd='';
   $options=array(PDO::ATTR_AUTOCOMMIT,0);
   $pdo=new PDO($dsn, $username, $passwd, $options);
   var_dump($pdo->inTransaction());
   //开启事务
   $pdo->beginTransaction();
   var_dump($pdo->inTransaction());
   //$sql='UPDATE userAccount SET money=money-2000 WHERE username="zzc"';
   $sql='UPDATE userAccount SET money=money-2000 WHERE username="zzccc"';

   $res1=$pdo->exec($sql);
   if($res1==0){
      throw new PDOException('zzc 转账失败');
   }
   $res2=$pdo->exec('UPDATE userAccount SET money=money+2000 WHERE username="jason"');
   if($res2==0){
      throw new PDOException('jason 接收失败');
   }
   //提交事务
   $pdo->commit();
}catch(PDOException $e){
   //回滚事务
   $pdo->rollBack();
   echo $e->getMessage();
}
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值