对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 相关文章推荐
Win2003服务器安全加固设置--进一步提高服务器安全性
May 23 PHP
php5中类的学习
Mar 28 PHP
深入理解curl类,可用于模拟get,post和curl下载
Jun 08 PHP
php定义数组和使用示例(php数组的定义方法)
Mar 29 PHP
PHP自带ZIP压缩、解压缩类ZipArchiv使用指南
Mar 03 PHP
php实现将任意进制数转换成10进制的方法
Apr 17 PHP
php使用Session和文件统计在线人数
Jul 04 PHP
PHP代码实现爬虫记录――超管用
Jul 31 PHP
使用PHP处理数据库数据如何将数据返回客户端并显示当前状态
Feb 16 PHP
详解PHP如何更好的利用PHPstorm的自动提示
Aug 18 PHP
PHP操作MongoDB实现增删改查功能【附php7操作MongoDB方法】
Apr 24 PHP
Yii框架函数简单用法分析
Sep 09 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
关于Appserv无法打开localhost问题的解决方法
2009/10/16 PHP
php函数指定默认值方法的小例子
2013/12/04 PHP
PHP使用curl制作简易百度搜索
2016/11/03 PHP
Laravel实现autoload方法详解
2017/05/07 PHP
javascript jQuery插件练习
2008/12/24 Javascript
File文件控件,选中文件(图片,flash,视频)即立即预览显示
2009/04/09 Javascript
javascript 正则替换 replace(regExp, function)用法
2010/05/22 Javascript
jquery中的on方法使用介绍
2013/12/29 Javascript
深入理解JSON数据源格式
2014/01/10 Javascript
jquery获取tr并更改tr内容示例代码
2014/02/13 Javascript
js获取url中&quot;?&quot;后面的字串方法
2014/05/15 Javascript
JS打开新窗口防止被浏览器阻止的方法
2015/01/03 Javascript
jQuery实现点击图片翻页展示效果的方法
2015/02/16 Javascript
jQuery实现滑动页面固定顶部显示(可根据显示位置消失与替换)
2015/10/28 Javascript
AngularJS 使用$sce控制代码安全检查
2016/01/05 Javascript
JS与Ajax Get和Post在使用上的区别实例详解
2016/06/08 Javascript
js的OOP继承实现(必看篇)
2017/02/18 Javascript
JS中SetTimeout和SetInterval使用初探
2017/03/23 Javascript
jQuery实现的简单在线计算器功能
2017/05/11 jQuery
JS中关于正则的巧妙操作
2017/08/31 Javascript
浅析JavaScript中的特殊数据类型
2017/12/15 Javascript
Node.js Buffer用法解读
2018/05/18 Javascript
微信小程序实现选项卡效果
2018/11/06 Javascript
js中数组对象去重的两种方法
2019/01/18 Javascript
JavaScript展开操作符(Spread operator)详解
2019/07/20 Javascript
python实现pdf转换成word/txt纯文本文件
2018/06/07 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
2018/12/20 Python
pyqt 多窗口之间的相互调用方法
2019/06/19 Python
使用apiDoc实现python接口文档编写
2019/11/19 Python
英国快时尚女装购物网站:PrettyLittleThing
2018/08/15 全球购物
合同意向书范本
2014/07/30 职场文书
学生检讨书
2015/01/27 职场文书
2015年物业管理工作总结
2015/04/23 职场文书
详解MindSpore自定义模型损失函数
2021/06/30 Python
HTML5 新增内容和 API详解
2021/11/17 HTML / CSS
Spring事务管理下synchronized锁失效问题的解决方法
2022/03/31 Java/Android