对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 相关文章推荐
snoopy 强大的PHP采集类使用实例代码
Dec 09 PHP
PHP输出数组中重名的元素的几种处理方法
Sep 05 PHP
PHP跳转页面的几种实现方法详解
Jun 08 PHP
php常用Output和ptions/Info函数集介绍
Jun 19 PHP
二进制交叉权限微型php类分享
Feb 07 PHP
经典PHP加密解密函数Authcode()修复版代码
Apr 05 PHP
Symfony2实现在doctrine中内置数据的方法
Feb 05 PHP
JSON两种结构之对象和数组的理解
Jul 19 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
Mar 31 PHP
php判断/计算闰年的方法小结【三种方法】
Jul 06 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
Nov 13 PHP
基于php+MySql实现学生信息管理系统实例
Aug 04 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
我的论坛源代码(四)
2006/10/09 PHP
PHP学习笔记 IIS7下安装配置php环境
2012/10/29 PHP
Php中用PDO查询Mysql来避免SQL注入风险的方法
2013/04/25 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
2017/05/20 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
2019/10/12 PHP
List the Codec Files on a Computer
2007/06/11 Javascript
菜鸟学习JavaScript小实验之函数引用
2010/11/17 Javascript
jQuery调用WebService的实现代码
2011/06/19 Javascript
js图片自动轮播代码分享(js图片轮播)
2014/05/06 Javascript
js在数组中删除重复的元素自保留一个(两种实现思路)
2014/08/22 Javascript
jquery ui bootstrap 实现自定义风格
2014/11/14 Javascript
JavaScript运算符小结
2015/06/03 Javascript
js调用百度地图及调用百度地图的搜索功能
2015/09/07 Javascript
浅析JavaScript Array和string的转换(推荐)
2016/05/20 Javascript
鼠标点击input,显示瞬间的边框颜色,对之修改与隐藏实例
2016/12/26 Javascript
原生js实现淘宝购物车功能
2020/06/23 Javascript
js实现微博发布小功能
2017/01/12 Javascript
Vue自定义弹窗指令的实现代码
2018/08/13 Javascript
React 使用recharts实现散点地图的示例代码
2018/12/07 Javascript
JS实现的小火箭发射动画效果示例
2018/12/08 Javascript
js+HTML5 canvas 实现简单的加载条(进度条)功能示例
2019/07/16 Javascript
VueCli4项目配置反向代理proxy的方法步骤
2020/05/17 Javascript
Python机器学习算法库scikit-learn学习之决策树实现方法详解
2019/07/04 Python
Flask教程之重定向与错误处理实例分析
2019/08/01 Python
python中struct模块之字节型数据的处理方法
2019/08/27 Python
python循环输出三角形图案的例子
2019/11/22 Python
python运用pygame库实现双人弹球小游戏
2019/11/25 Python
python中如何写类
2020/06/29 Python
优衣库英国官网:UNIQLO英国
2016/12/25 全球购物
公务员培训心得体会
2013/12/28 职场文书
马智宇婚礼主持词
2014/03/22 职场文书
中学生操行评语大全
2014/04/24 职场文书
美国留学经济担保书
2014/05/20 职场文书
心得体会格式及范文
2016/01/25 职场文书
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
2021/06/18 MySQL
TV动画《神废柴☆偶像》公布先导PV
2022/03/20 日漫