对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 相关文章推荐
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
Dec 06 PHP
PHP技术开发技巧分享
Mar 23 PHP
php将数据库中所有内容生成静态html文档的代码
Apr 12 PHP
php截取后台登陆密码的代码
May 05 PHP
关于Iframe如何跨域访问Cookie和Session的解决方法
Apr 15 PHP
深入PHP中的HashTable结构详解
Jun 13 PHP
PHP常用函数和常见疑难问题解答
Mar 05 PHP
浅谈ThinkPHP的URL重写
Nov 25 PHP
php实现编辑和保存文件的方法
Jul 20 PHP
PHP检测数据类型的几种方法(总结)
Mar 04 PHP
实例解析php的数据类型
Oct 24 PHP
php经典趣味算法实例代码
Jan 21 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静态新闻列表自动生成代码
2007/06/14 PHP
php连接oracle数据库及查询数据的方法
2014/12/29 PHP
Symfony2学习笔记之系统路由详解
2016/03/17 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
共享自己写一个框架DreamScript
2007/01/20 Javascript
基于Jquery+Ajax+Json实现分页显示附效果图
2014/07/30 Javascript
浅谈javascript原型链与继承
2015/07/13 Javascript
深入理解MVC中的时间js格式化
2016/05/19 Javascript
利用NPM淘宝的node.js镜像加速nvm
2017/03/27 Javascript
Vue-cli-webpack搭建斗鱼直播步骤详解
2017/11/17 Javascript
基于ssm框架实现layui分页效果
2019/07/27 Javascript
浅析JavaScript 函数柯里化
2020/09/08 Javascript
深入讲解Python中的迭代器和生成器
2015/10/26 Python
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
2016/12/15 Python
python字符串中的单双引
2017/02/16 Python
解决Spyder中图片显示太小的问题
2018/04/27 Python
删除python pandas.DataFrame 的多重index实例
2018/06/08 Python
pyQt4实现俄罗斯方块游戏
2018/06/26 Python
Python标准库shutil用法实例详解
2018/08/13 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
2019/04/26 Python
PyQtGraph在pyqt中的应用及安装过程
2019/08/04 Python
Python字符串中删除特定字符的方法
2020/01/15 Python
jupyter实现重新加载模块
2020/04/16 Python
Python多线程thread及模块使用实例
2020/04/28 Python
如何在python中判断变量的类型
2020/07/29 Python
python用tkinter实现一个gui的翻译工具
2020/10/26 Python
html5简介及新增功能介绍
2020/05/18 HTML / CSS
Nisbets法国:英国最大的厨房和餐饮设备供应商
2019/03/18 全球购物
C++面试题目
2013/06/25 面试题
值类型与引用类型有什么不同?请举例说明?并分别列举几种相应的数据类型
2015/10/24 面试题
应届生.NET方向面试题
2015/05/23 面试题
经济管理专业毕业生自荐信范文
2014/01/02 职场文书
上班玩游戏检讨书
2014/02/07 职场文书
公司人事专员岗位职责
2014/08/11 职场文书
辞职离别感言
2015/08/04 职场文书
遗嘱格式范本
2015/08/07 职场文书