对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 中的面向对象编程:通向大型 PHP 工程的办法
Dec 03 PHP
php中将汉字转换成拼音的函数代码
Sep 08 PHP
实测在class的function中include的文件中非php的global全局环境
Jul 15 PHP
phpexcel导入excel数据使用方法实例
Dec 24 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
Jan 24 PHP
PHP关于htmlspecialchars、strip_tags、addslashes的解释
Jul 04 PHP
php数组索引与键值操作技巧实例分析
Jun 24 PHP
php获取图片信息的方法详解
Dec 10 PHP
PHP 中 var_export、print_r、var_dump 调试中的区别
Jun 19 PHP
PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解
Feb 15 PHP
PHP进阶学习之类的自动加载机制原理分析
Jun 18 PHP
微信小程序和php的登录实现
Apr 01 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
PHP4和PHP5共存于一系统
2006/11/17 PHP
php下mysql数据库操作类(改自discuz)
2010/07/03 PHP
PHP字符串的编码问题的详细介绍
2013/04/27 PHP
php工具型代码之印章抠图
2018/07/18 PHP
flexigrid 类似ext grid的JS表格代码
2010/07/17 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
jquery制作多功能轮播图插件
2015/04/02 Javascript
jquery简单倒计时实现方法
2015/12/18 Javascript
探析浏览器执行JavaScript脚本加载与代码执行顺序
2016/01/12 Javascript
Treegrid的动态加载实例代码
2016/04/29 Javascript
js弹出框、对话框、提示框、弹窗实现方法总结(推荐)
2016/05/31 Javascript
BootStrap table表格插件自适应固定表头(超好用)
2016/08/24 Javascript
javascript cookie用法基础教程(概念,设置,读取及删除)
2016/09/20 Javascript
JS时间控制实现动态效果的实例讲解
2017/07/31 Javascript
Openlayers学习之加载鹰眼控件
2020/09/28 Javascript
Node.js中的异步生成器与异步迭代详解
2021/01/31 Javascript
[41:13]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第一场 11.20
2020/11/20 DOTA
Python爬虫常用库的安装及其环境配置
2018/09/19 Python
pymongo中group by的操作方法教程
2019/03/22 Python
python爬虫简单的添加代理进行访问的实现代码
2019/04/04 Python
python3-flask-3将信息写入日志的实操方法
2019/11/12 Python
pycharm 2020.2.4 pip install Flask 报错 Error:Non-zero exit code的问题
2020/12/04 Python
美国第一个网上卖鞋零售商:OnlineShoes.com
2017/09/24 全球购物
宝拉珍选美国官网:Paula’s Choice美国
2018/01/07 全球购物
英国最大的在线时尚眼镜店:Eyewearbrands
2019/03/12 全球购物
美国爆米花工厂:The Popcorn Factory
2019/09/14 全球购物
庆元旦广播稿
2014/02/10 职场文书
安全生产活动月方案
2014/03/09 职场文书
大学生党员承诺书
2014/05/20 职场文书
党的群众路线教育实践活动教师自我剖析材料
2014/10/09 职场文书
先进班组材料范文
2014/12/25 职场文书
2015年公司工作总结
2015/04/25 职场文书
文艺晚会开场白
2015/05/29 职场文书
党章学习心得体会2016
2016/01/14 职场文书
Python序列化模块JSON与Pickle
2022/06/05 Python
Redis过期数据是否会被立马删除
2022/07/23 Redis