对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+dbfile开发小型留言本
Oct 09 PHP
使用sockets:从新闻组中获取文章(一)
Oct 09 PHP
Win2003服务器安全加固设置--进一步提高服务器安全性
May 23 PHP
PHP 数字左侧自动补0
Mar 31 PHP
php面向对象全攻略 (十二) 抽象方法和抽象类
Sep 30 PHP
php unset全局变量运用问题的深入解析
Jun 17 PHP
php操作xml入门之cdata区段
Jan 23 PHP
Yii实现单用户博客系统文章详情页插入评论表单的方法
Dec 28 PHP
PHP中FTP相关函数小结
Jul 15 PHP
CodeIgniter框架常见用法工作总结
Mar 16 PHP
laravel 关联关系遍历数组的例子
Oct 10 PHP
PHP xpath提取网页数据内容代码解析
Jul 16 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
星际原理概述
2020/03/04 星际争霸
PHP has encountered an Access Violation at 7C94BD02解决方法
2009/08/24 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
JavaScript使用cookie
2007/02/02 Javascript
javaScript同意等待代码实现心得
2011/01/01 Javascript
JQuery魔力之$(&quot;tagName&quot;)与selector
2012/03/05 Javascript
jQuery使用一个按钮控制图片的伸缩实现思路
2013/04/19 Javascript
JSONP跨域的原理解析及其实现介绍
2014/03/22 Javascript
jQuery实现鼠标滑向当前图片高亮显示并且其它图片变灰的方法
2015/07/27 Javascript
Bootstrap基本样式学习笔记之按钮(4)
2016/12/07 Javascript
jquery.masonry瀑布流效果
2017/05/25 jQuery
认识less和webstrom的less配置方法
2017/08/02 Javascript
node.js部署之启动后台运行forever的方法
2018/05/23 Javascript
微信小程序框架wepy之动态控制类名
2018/09/14 Javascript
微信小程序request请求封装,验签代码实例
2019/12/04 Javascript
解决VUE-Router 同一页面第二次进入不刷新的问题
2020/07/22 Javascript
OpenLayers3实现对地图的基本操作
2020/09/28 Javascript
通过JS判断网页是否为手机打开
2020/10/28 Javascript
javascript代码实现简易计算器
2021/01/25 Javascript
[03:00]DOTA2-DPC中国联赛1月18日Recap集锦
2021/03/11 DOTA
浅要分析Python程序与C程序的结合使用
2015/04/07 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
2016/06/07 Python
详解Python核心对象类型字符串
2018/02/11 Python
深入浅析python 协程与go协程的区别
2019/05/09 Python
Python3+Appium实现多台移动设备操作的方法
2019/07/05 Python
Django框架之中间件MiddleWare的实现
2019/12/30 Python
Python爬取微信小程序通用方法代码实例详解
2020/09/29 Python
5款实用的python 工具推荐
2020/10/13 Python
python归并排序算法过程实例讲解
2020/11/04 Python
eBay爱尔兰站:eBay.ie
2019/08/09 全球购物
双立人美国官方商店:ZWILLING集团餐具和炊具
2020/05/07 全球购物
什么是反射?如何实现反射?
2016/07/25 面试题
党员领导干部民主生活会批评与自我批评发言
2014/09/28 职场文书
2015年党员个人剖析材料
2014/12/18 职场文书
政协工作总结2015
2015/05/20 职场文书
高二语文教学反思
2016/02/16 职场文书