PHP中PDO之事务讲解 及 事务四大特性的介绍

1 篇文章 0 订阅
说道PDO首先应该想到的问题:

 下面博主给大家讲解下相关问题:

1.什么是PDO?

    PDO类似于mysqli,其不同的是PDO能对不同数据库的操作,方便使用。
2.为什么要用pdo?
更换其他数据库的时候不需要更改代码

3.PDO的使用方法:

            PDO是PHP5新加入的一个重大功能,我们的数据库服务器为MySQL,所有的程序代码的数据库操作全是一mysql()或者mysqli()函数来操作,当我们的数据库 需要更换时比如换成,SQL、SERVER、PostgreSQL、MS 等,我们不可能去修       改所有的程序代码!所以就要用到PDO,PDO很好的帮我们解决了这个问题,使用PDO操作非常方便,只需要修改数据源格       式,和加载相应的驱动文件到PHP.ini即可;

        用法步骤:

        1:首先你需要开启一项配置,开启php.ini中的(php_pdo_mysql.dll);

                                                找到extension_dir='';路径就是你的扩展目录

        2:对于操作数据库事应该注意的事项(下面将博主的事例展示给大家看):

            

    # pdo连接数据库
    $dbms   = 'mysql';     # 数据库类型
    $host   = 'localhost'; # 数据库主机名
    $dbName = 'DB_NAME';   # 使用的数据库
    $user   = '****';      # 数据库连接用户名
    $pass   = '****';      # 对应的密码
    $dsn    =  "$dbms:host=$host;dbname=$dbName";
    # 初始化PDO得到对象(请注意参数);
   $db = new PDO($dsn, $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8';")); //初始化一个PDO对象
    
   $sql = "select money from bank where id = 1";

   $result = $db->query($sql);

   $result->setFetchMode(PDO::FETCH_ASSOC);

   $arr = $result->fetch();


 注释:
    1、query()执行查询语句,返回结果集对象;
    2、用循环利用fetch()方法逐个的取出记录,返回的是关联数组和索引数组两种数组,和mysql_fetch_array()的返回结果一致
    3、fetchAll()方法可以一次取出结果集中所有的数组,以二维数组的形式返回,但仍然是关联数组和索引数组两种数组


添加:

     主要思路:
         1)连接数据库、数据库的用户名、数据库的密码
         2)生成PDO对象
         3)执行添加


在这里博主总结出几点:

1. 开启事务start transaction,可以简写为 begin 
2. 然后记录之后需要执行的一组sql 
3. 事务提交commit 
4. 如果所有的sql都执行成功,则提交,将sql的执行结果持久化到数据表内。 
5. 事务回滚rollback 
6. 如果存在失败的sql,则需要回滚,将sql的执行结果,退回到事务开始之时 
7. 无论回滚还是提交,都会关闭事务!需要再次开启,才能使用。 
8. 还有一点需要注意,就是事务只针对当前连接。

事务的四大特点:(面试常见题)

原子性(Atomicity):

事务是数据库的逻辑工作单位,它对数据库的修改要么全部执行,要么全部不执行。



一致性(Consistemcy):

事务前后,数据库的状态都满足所有的完整性约束。



隔离性(Isolation):

并发执行的事务是隔离的,一个不影响一个。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为

只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。

通过设置数据库的隔离级别,可以达到不同的隔离效果。



持久性(Durability):

在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

注:关于一致性可能有些人不太理解,OK,我再来举个例子解释一下

A向B转账,假设转账之前这两个用户的钱加起来总共是2000,那么A向B转账之后,不管这两个账户怎么转,A用户的钱和B用户的钱加起来的总额还是2000,这个就是事务的一致性。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值