PDO笔记(3)

本文详细介绍了PDO的错误处理模式,包括静默模式、警告模式和异常模式,并讲解了如何设置错误处理模式。此外,还探讨了PDO的事务处理,强调了事务的四大特性。最后,对PDO和MySQL在连接及多条记录插入效率上进行了对比分析。
摘要由CSDN通过智能技术生成
错误处理模式
  1. 默认:静默模式 PDO::ERRMODE_SLIENT
    在错误发生时不进行任何操作,PDO将只设置错误代码。可以通过 PDO对象中的 errorCode()errorInfo() 方法对语句和数据库对象进行检查。
  2. 警告模式 PDO::ERRMODE_WARNING
    除了设置错误代码外,PDO还将发出一条 PHP传统的E_WARNING消息,可以使用常规的 PHP错误处理程序捕获该警告。
  3. 异常模式 PDO::ERRMODE_EXCEPTION
    除了设置错误代码外,PDO还将抛出一个PDOException,并设置其属性,以反映错误代码和错误信息。

通过 setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_) 设置

事务处理

事务:把很多事情当作一件事情来做,要么都成功,要么都失败。原子性、一致性、独立性、持久性

方法描述
beginTransaction()启动一个事务
commit()提交一个事务
rollBack()回滚一个事务
inTransaction()检测是否在一个事务内

默认情况下,MySQL以自动提交的模式运行,而事务不希望有自动提交的行为,要在当前的会话中关闭自动提交 setAttribute(PDO::ATTR_AUTOCOMMIT, 0)

try{
    $pdo = new PDO('mysql:host=localhost;dbname=shopimooc','root','root', array(PDO::ATTR_AUTOCOMMIT => 0));
    var_dump($pdo->inTransaction());
    $pdo->beginTransaction();
    $sql = "update userAccount set money=money-2000 where username='adminsad'";
    $res1 = $pdo->exec($sql);
    if($res1==0){
        throw new PDOException('admin 转账失败');
    }
    $res2 = $pdo->exec("UPDATE userAccount set money=money+2000 where username='wang'");
    if($res2==0){
        throw new PDOException('wang 接收失败');
    }
    $pdo->commit();
}catch (PDOException $e){
    $pdo->rollBack();
    echo "Fail:".$e->getMessage();
}
效率剖析
  • 只需要进行单次数据库连接的时候,PDO的连接效率比MySQL的连接效率好一点;进行多次连接的时候,MySQL的连接效率更甚。
  • 插入多条记录时,MySQL效率更好些

microtime() 函数返回当前 Unix 时间戳的微秒数。

sprintf() 函数把格式化的字符串写入一个变量中。

$number = 9;
$str = "RUNOOB";
$txt = sprintf("%s 每天有 %u 万人在访问!", $str, $number);
echo $txt;
//RUNOOB 每天有 9 万人在访问!

array_walk() 对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数。

<?php
function myfunction($value,$key)
{
echo "The key $key has the value $value<br>";
}
$a=array("a"=>"red","b"=>"green","c"=>"blue");
array_walk($a,"myfunction");
//The key a has the value red...
?> 

array_keys() 返回包含数组中所有键名的一个新数组。(被返回的数组将使用数值键,从 0 开始并以 1 递增。)
array_values() 返回一个包含给定数组中所有键值的数组,但不保留键名。(被返回的数组将使用数值键,从 0 开始并以 1 递增。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值