对PHP PDO的一些认识小结


Posted in PHP onJanuary 23, 2015

1、PDO(PHP Data Object)扩展为PHP定义了一个访问数据库的轻量、持久的接口。实现PDO接口的每一种数据库驱动都能以正则扩展的形式把各自的特色表现出来。

主要:PDO扩展只是一个抽象的接口层,利用PDO扩展本身并不能实现任何数据库操作,必须使用一个特定的数据库PDO驱动访问数据库

2、启动PDO方法:找到php.ini文件将

;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设定获取数据

 

给一个事务处理的简单例子:

<?php

    /*

        事务处理

        MYSQL 表引擎  MyISAM  InnoDB

        添加字段 alter table user add money int not null default 0;

        查看表引擎 show create table user

        修改表引擎 alter table user engine=InnoDB

    */

 

     

    try{

        //实例化PDO

        $pdo=new PDO("mysql:host=localhost;dbname=photo","root","123456"。array('3'=>'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 相关文章推荐
php中通过smtp发邮件的类,测试通过
Jan 22 PHP
使用apache模块rewrite_module (转)
Feb 14 PHP
PHP ? EasyUI DataGrid 资料存的方式介绍
Nov 07 PHP
PHP Global变量定义当前页面的全局变量实现探讨
Jun 05 PHP
基于PHP+Ajax实现表单验证的详解
Jun 25 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
Apr 15 PHP
php打乱数组二维数组多维数组的简单实例
Jun 17 PHP
Laravel中日期时间处理包Carbon的简单使用
Sep 21 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
Sep 05 PHP
PHP实现一个轻量级容器的方法
Jan 28 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
Apr 16 PHP
Laravel框架Auth用户认证操作实例分析
Sep 29 PHP
smarty模板引擎中自定义函数的方法
Jan 22 #PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
Jan 22 #PHP
smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
Jan 22 #PHP
smarty模板引擎从配置文件中获取数据的方法
Jan 22 #PHP
smarty模板引擎从php中获取数据的方法
Jan 22 #PHP
smarty模板引擎中变量及变量修饰器用法实例
Jan 22 #PHP
smarty内置函数capture用法分析
Jan 22 #PHP
You might like
生成静态页面的PHP类
2006/07/15 PHP
晋城吧对DiscuzX进行的前端优化要点
2010/09/05 PHP
分享常见的几种页面静态化的方法
2015/01/08 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
详解laravel passport OAuth2.0的4种模式
2019/11/04 PHP
50个优秀经典PHP算法大集合 附源码
2020/08/26 PHP
js版本A*寻路算法
2006/12/22 Javascript
javascript URL锚点取值方法
2009/02/25 Javascript
判断浏览器的javascript版本的代码
2010/09/03 Javascript
浅谈js中的闭包
2015/03/16 Javascript
JavaScript中的substr()方法使用详解
2015/06/06 Javascript
JS验证IP,子网掩码,网关和MAC的方法
2015/07/02 Javascript
javascript省市级联功能实现方法实例详解
2015/10/20 Javascript
基于JQuery打造无缝滚动新闻步骤详解
2016/03/31 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
2016/05/11 Javascript
微信小程序 向左滑动删除功能的实现
2017/03/10 Javascript
Vue 组件间的样式冲突污染
2017/08/31 Javascript
详解项目升级到vue-cli3的正确姿势
2019/01/28 Javascript
mongodb初始化并使用node.js实现mongodb操作封装方法
2019/04/02 Javascript
javascript将扁平的数据转为树形结构的高效率算法
2020/02/27 Javascript
跟老齐学Python之通过Python连接数据库
2014/10/28 Python
Python中用Decorator来简化元编程的教程
2015/04/13 Python
python解决方案:WindowsError: [Error 2]
2016/08/28 Python
pandas进行数据的交集与并集方式的数据合并方法
2018/06/27 Python
python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法
2019/06/26 Python
pytorch 常用函数 max ,eq说明
2020/06/28 Python
酒店销售经理岗位职责
2014/01/31 职场文书
中学生家长评语大全
2014/04/16 职场文书
拔河比赛口号
2014/06/10 职场文书
导航工程专业自荐信
2014/09/02 职场文书
2014年仓库管理工作总结
2014/12/17 职场文书
实习生个人总结范文
2015/02/28 职场文书
行政二审代理词
2015/05/25 职场文书
运动会闭幕式通讯稿
2015/07/18 职场文书
2016党校培训心得体会
2016/01/07 职场文书
Python中request的基本使用解决乱码问题
2022/04/12 Python