找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 425|回复: 0
打印 上一主题 下一主题

对PHP PDO的一些认识小结

[复制链接]

2647

主题

2647

帖子

7881

积分

论坛元老

Rank: 8Rank: 8

积分
7881
跳转到指定楼层
楼主
发表于 2018-2-14 05:50:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            1、PDO(PHP Data Object)扩展为PHP定义了一个访问数据库的轻量、持久的接口。实现PDO接口的每一种数据库驱动都能以正则扩展的形式把各自的特色表现出来。
主要:PDO扩展只是一个抽象的接口层,利用PDO扩展本身并不能实现任何数据库操作,必须使用一个特定的数据库PDO驱动访问数据库
2、启动PDO方法:找到php.ini文件将
[U]复制代码[/U] 代码如下:
  ;extension=php_pdo.dll
前的分号去掉即可(linux环境下类似)
3、PDO预定义类:
  PDO包含了三个预定义类:PDO、PDOStatement、PDOException
  (1)PDO类:代表一个PHP和数据库之间的连接
    PDO:构造器,创建一个新的PDO对象
    beginTransaction:开始事务
    commit:提交事务
    errorCode:从数据库返回一个错误代号,如果有的话
    errorInfo:从数据库返回一个含有错误信息的数组,如果有的话
    exec:执行一条SQL语句并返回影响的行数
    getAttribute:返回一个数据库的连接属性
    lastInsertId:返回最新插入到数据库的行(ID)
    prepare:为执行准备一条SQL语句,返回语句执行后的联合结果集
    query:执行一条SQL语句并返回结果集
    rollBack:回滚一个事务
    setAttribute:设置一个数据库连接属性
  (2)PDOStatement类:代表一条预处理语句以及语句执行后的联合结果集
    bindColomn:绑定一个PHP变量到结果集输出列
    bindParam:绑定一个变量到PHP预处理语句中的参数
    bindValue:绑定一个值到处理语句中的参数
    closeCursor:关闭游标,使语句可以再次执行
    cloumnCount:返回结果集中列的数量
    errorCode:从语句中返回一个错误代号,如果有的话
    errorInfo:从语句中返回包含错误信息的数组
    execute:执行一条预处理语句
    fetch:从结果集中取出一行
    fetchAll:从结果集中取出一个包含所有行的数组
    fetchColomn:返回结果集中某一列的数据
    getAttribute:返回一个PDOStatement属性
    getColomnMeta:返回结果集中某一列的结构
    nextRowset:返回下一个结果集
    rowCount:返回SQL语句执行后影响的行数
    setAttribute:设置一个PDOStatement属性
    setFetchMode:为PDOStatement设定获取数据

给一个事务处理的简单例子:
[U]复制代码[/U] 代码如下:
'2'));
    }catch(PDOException $e){
        echo $e->getMessage();
    }
    //设置字符集
    $sql="set name utf8";
    $pdo->exec($sql);
    //开启事务处理
    $pdo->beginTransaction();
    $num=250;
    $sql="update user set money=money-{$num} where id =1";
    $rows=$pdo->exec($sql);
     
    $sql="update user set monet=money-{$num} where id=2";
    $rows+=$pdo->exec($sql);
    //结束事务处理
    if($rows==2){
        $pdo->commit();
    }else{
        $pdo->rollBack();
    }
?>
(事务的主要特性:原子性、一致性、独立性和持久性)
4、PDO最大的特点是引入了参数绑定和预编译
  预编译负责两件事,转移和软解析提速。程序要支持预编译,除了数据库支持外,还需要驱动支持(PDO和NySQLi支持)
5、PDO的效率问题
  (1)在一个大表大数据量中进行测试,PDO的CRUD效率比MySql直连低5%~15%,并且方差大于MySQL直连
  (2)至于负载方面,PDO开启长连接后负载高于MySQL且比较稳定。
其实在实际应用中,90%的程序是不会进行数据库迁移的,有数据库迁移的应用程序少之又少。
            
            
您可能感兴趣的文章:
  • 关于php连接mssql:pdo odbc sql server
  • php使用pdo连接mssql server数据库实例
  • php查询mssql出现乱码的解决方法
  • php中数据库连接方式pdo和mysqli对比分析
  • php中PDO方式实现数据库的增删改查
  • PHP连接MSSQL方法汇总
  • PHP的PDO操作简单示例
  • PHP的PDO常用类库实例分析
  • PHP中PDO的事务处理分析
  • PHP封装的MSSql操作类完整实例
  • php使用pdo连接sqlite3的配置示例
  • php基于PDO连接MSSQL示例DEMO
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端