1、PDO(PHP Data Object)扩展为PHP定义了一个访问数据库的轻量、持久的接口。实现PDO接口的每一种数据库驱动都能以正则扩展的形式把各自的特色表现出来。
主要:PDO扩展只是一个抽象的接口层,利用PDO扩展本身并不能实现任何数据库操作,必须使用一个特定的数据库PDO驱动访问数据库
2、启动PDO方法:找到php.ini文件将
;extension=php_pdo.dll
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%的程序是不会进行数据库迁移的,有数据库迁移的应用程序少之又少。
隐藏盒子的几种方式 隐藏盒子,有以下几种方式: (1)方式一: overflow:hidden; //隐藏盒子超出的部分 (2)方式二: display: none; 隐藏盒子,而且不占位置(用的最多) 比如,点击X,关闭京东首页上方的广告栏。 (3)方式三: visibility: hidden; //隐藏盒子,占位置。 visibility: visible; //让盒子重新
本文向大家介绍Javascript中this关键字的一些小知识,包括了Javascript中this关键字的一些小知识的使用技巧和注意事项,需要的朋友参考一下 Javascript应该是现在最流行的跨平台语言之一,一直在玩前端的一些有意思的东西,发现竟然没有掌握好这门语言。有点舍本逐末,于是想趁着现在这有空的时候好好补充一点遗漏的东西。 this的隐性绑定 一开始这是我很迷惑的东西,刚开始看到的时
本文向大家介绍Lua中关于元方法的一些知识点小结,包括了Lua中关于元方法的一些知识点小结的使用技巧和注意事项,需要的朋友参考一下 本篇要介绍的东西比较零散,都是一些小知识点,所以就放在一起了。 1.两个具有不同元表的值进行算术操作(比如加法) 之前举例的时候,两个table相加,这两个table都是具有相同的元表的,所以没有任何问题。 那么,如果两个table或者两个进行相加操作的值,具有不同的
本文向大家介绍说说你对small标签的认识,有哪些应用场景?相关面试题,主要包含被问及说说你对small标签的认识,有哪些应用场景?时的应答技巧和注意事项,需要的朋友参考一下 HTML 中的元素將使文本的字体变小一号。(例如从大变成中等,从中等变成小,从小变成超小)。在HTML5中,除了它的样式含义,这个元素被重新定义为表示边注释和附属细则,包括版权和法律文本 MDN
在面向对象中,类和对象是最基本、最重要的组成单元。类实际上是表示一个客观世界某类群体的一些基本特征抽象。对象就是表示一个个具体的东西。所以说 类是对象的抽象,对象是类的具体。 让我们来看看人类所具有的一些特征,这些特征包括属性(一些参数、数值)以及方法(一些行为,他能干什么)。 每个人都有身高、体重、年龄、血型等属性,人会劳动、会直立行走、会用自己的头脑去创造工具等方法。人之所以能区别于其他类型的
条款50: 提高对C++的认识 C++中有很多 "东西":C,重载,面向对象,模板,例外,名字空间。这么多东西,有时让人感到不知所措。怎么弄懂所有这些东西呢? C++之所以发展到现在这个样子,在于它有自己的设计目标。理解了这些设计目标,就不难弄懂所有这些东西了。C++最首要的目标在于: · 和C的兼容性。很多很多C还存在,很多很多C程序员还存在。C++利用了这一基础,并建立在 ---- 我是指 "