对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读写文件的方法(生成HTML)
Nov 27 PHP
PHP 选项及相关信息函数库
Dec 04 PHP
PHP Memcached应用实现代码
Feb 08 PHP
PHP URL路由类实例
Nov 12 PHP
PHP图像处理之imagecreate、imagedestroy函数介绍
Nov 19 PHP
php+ajax实时输入自动搜索匹配的方法
Dec 26 PHP
PHP中static关键字以及与self关键字的区别
Jul 01 PHP
php判断当前操作系统类型
Oct 28 PHP
Yii2中如何使用modal弹窗(基本使用)
May 30 PHP
php抽奖概率算法(刮刮卡,大转盘)
Apr 17 PHP
PHP+Ajax验证码验证用户登录
Jul 20 PHP
php基于 swoole 实现的异步处理任务功能示例
Aug 13 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实现比较全的数据库操作类
2015/06/18 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
用js模拟JQuery的show与hide动画函数代码
2010/09/20 Javascript
jquery导航制件jquery鼠标经过变色效果示例
2013/12/05 Javascript
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
js实现网站最上边可关闭的浮动广告条代码
2015/09/04 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
2015/11/01 Javascript
javascript Promise简单学习使用方法小结
2016/05/17 Javascript
nodejs 的 session 简单使用
2016/06/06 NodeJs
Node.js的文件权限及读写flag详解
2016/10/11 Javascript
Javascript 实现计算器时间功能详解及实例(二)
2017/01/08 Javascript
js 原型对象和原型链理解
2017/02/09 Javascript
js中apply和Math.max()函数的问题及区别介绍
2018/03/27 Javascript
webpack公共组件引用路径简化小技巧
2018/06/15 Javascript
JS获取指定月份的天数两种实现方法
2018/06/22 Javascript
vue异步axios获取的数据渲染到页面的方法
2018/08/09 Javascript
AngularJS修改model值时,显示内容不变的实例
2018/09/13 Javascript
解决vue项目中页面调用数据 在数据加载完毕之前出现undefined问题
2019/11/14 Javascript
[01:18:33]Secret vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
python处理PHP数组文本文件实例
2014/09/18 Python
使用Python实现BT种子和磁力链接的相互转换
2015/11/09 Python
不可错过的十本Python好书
2017/07/06 Python
python中的文件打开与关闭操作命令介绍
2018/04/26 Python
python 分离文件名和路径以及分离文件名和后缀的方法
2018/10/21 Python
Python银行系统实战源码
2019/10/25 Python
Python实现银行账户资金交易管理系统
2020/01/03 Python
Python第三方库的几种安装方式(小结)
2020/04/03 Python
Python图片处理模块PIL操作方法(pillow)
2020/04/07 Python
python使用隐式循环快速求和的实现示例
2020/09/11 Python
Nasty Gal英国:美国女性服饰销售网站
2021/03/02 全球购物
企业为何需要商业计划书
2013/12/26 职场文书
求职信模板标准格式范文
2014/02/23 职场文书
房屋租赁合同补充协议
2014/10/11 职场文书
匿名检举信范文
2015/03/02 职场文书
导游词之安徽醉翁亭
2020/01/10 职场文书
MySQL高速缓存启动方法及参数详解(query_cache_size)
2021/07/01 MySQL