04PDO增删改查预处理文档格式.docx

上传人:b****5 文档编号:19960255 上传时间:2023-01-12 格式:DOCX 页数:17 大小:1.24MB
下载 相关 举报
04PDO增删改查预处理文档格式.docx_第1页
第1页 / 共17页
04PDO增删改查预处理文档格式.docx_第2页
第2页 / 共17页
04PDO增删改查预处理文档格式.docx_第3页
第3页 / 共17页
04PDO增删改查预处理文档格式.docx_第4页
第4页 / 共17页
04PDO增删改查预处理文档格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

04PDO增删改查预处理文档格式.docx

《04PDO增删改查预处理文档格式.docx》由会员分享,可在线阅读,更多相关《04PDO增删改查预处理文档格式.docx(17页珍藏版)》请在冰豆网上搜索。

04PDO增删改查预处理文档格式.docx

key:

获取当前下标

next:

数组指针下移

rewind:

重置指针

valid:

判断当前指针是否有效,使用key函数判断数组下标

快速排序:

1.找到一个基准元素;

2比较数组中其他所有元素;

3.将与基准元素比较后的结果根据大小放到两个不同的数组中;

4.数组递归调用函数自己;

5.返回一个已经排好序的数组(array_merge())

递归点:

数组

递归出口:

数组元素只有一个(或者为空)的时候

需求:

一个项目,下面有两个团队:

要求可以随意的切换数据库(mysql,Oracle),一个团队负责做mysql,一个团队负责做Oracle。

(公共接口已经做好)

 

但是以上解决方案需要用户每次去手动修改代码来继承不同的类。

PDO

PDO:

PHPDataObject,PHP数据对象(数据抽象层)

作用:

能够解决用户在需要使用不同的数据库的时候进行来回的切换,PDO能够自动的进行数据库的切换,而且还能将所有的有可能存在的不兼容的语法进行兼容性处理。

加载PDO

使用PDO之前必须要开启PDO扩展

1.在php.ini文件中找到PDO扩展

开启Mysqlpdo扩展

注:

如果PHP版本比较低的情况下,需要额外的去开启pdo扩展,再开启pdo对应的数据库扩展

2.重启服务器

使用PDO

PDO这一套不单只是一个类,有三个类

PDO类:

负责数据库的连接,分发还SQL语句的发送

PDOStatement类:

结果集类,专门用来出来查询的结果,还有其他功能(预处理)

PDOException类:

用异常机制处理PDO类所碰到的问题

操作数据库步骤

1.连接认证

__construct($dsn,$user,$pass)

$dsn:

由两个部分构成:

数据源,数据库信息

mysql:

host=localhost;

port=3306;

dbname=project

$pdo=newPDO(‘mysql:

dbname=project’,’root’,’root’);

2.组织SQL语句

3.发送SQL语句给服务器,接收执行结果

PDOStatementPDO:

:

query:

执行有结果集返回的查询语句

4.从结果集获取数据

PDOStatement:

fetch:

从结果集中获取一行记录

5.关闭连接

PDO没有提供关闭连接的方法

unset(PDO对象);

$pdo=null;

PDO增删改查

1.新增数据

2.修改数据

3.删除数据

4.查询数据

查询处理

在查询得到的结果集处理时,默认的使用fetch得到的是一个混合数组,可以通过方法指定参数来修改获取数据的方式。

fetch方法指定参数

关联数组

索引数组

fetchAll

自定义获取所有结果集内容

作业:

使用while循环实现所有的结果集内容的遍历。

fetchColumn

意义

1.减少代码冗余

2.提高代码执行效率

fetchObject

stdClass:

标准类,空类

$str=‘abcd’;

$o=(object)$str;

//得到的对象就是stdClass对象

指定自己类

bindColumn与fetch

为了操作方便,为了弥补fetchColumn只能获取一个字段值的缺陷。

预处理

在真正执行某条SQL语句之前,先将SQL语句准备好,在执行过程中再绑定数据

语法:

准备预处理

prepare预处理名字from‘要执行的SQL语句’

执行预处理

execute预处理名字[using变量]

预处理高级使用:

可以在预处理过程中使用一些列不确定的内容。

PDO预处理

可以使用多种方式实现预处理:

指的是在绑定数据进行执行的时候,可以有多种方式。

使用数组指定预处理变量

1.准备预处理语句(发送给服务器,让服务器准备预处理语句)

prepare:

类似exec将一条SQL语句发送给Mysql服务器

2.执行预处理:

将要操作的数据发送给预处理语句,再执行预处理语句

execute([$array]):

数组用来传递对应的参数

通过绑定变量

bindParam:

在执行预处理之前,将之前预处理语句所指定的变量进行赋值

bindParam只能通过变量的形式进行赋值(引用传值)

bindValue:

与bindParam一样

bindValue可以直接赋值(值传递)

bindParam与bindValue的区别

1.bindParam必须要先声明变量,再使用变量;

bindValue可以直接使用值

2.bindValue是一次性的,而bindParam可以无限使用(因为使用的引用传值,一旦变量的值进行改变,那么对应的组织SQL语句时所用到的变量的值也跟着改变)

预处理语句使用原始?

代替变量

PDO事务处理

事务处理流程

1.开启事务

PDO:

beginTransaction

2.事务操作

所有的实务操作就是增删改

3.事务提交

commit:

成功后提交数据

rollback:

失败后回滚数据

注意

1.要实现事务处理必须数据表的存储引擎为InnoDB

2.事务必须完整(开启提交)

不适用PDO的事务处理,实现模拟事务。

PDO属性设置

设置PDO在处理数据的过程中采用什么方式去处理

setAttribute:

设置属性

getAttribute:

获取属性

常用属性

ATTR_AUTOCOMMIT:

设置当前连接Mysql服务器的客户端的SQL语句是否自动执行,默认是自动提交

ATTR_CASE:

当pdo从结果集中获取数据的时候,如何处理对应的字段的名字

CASE_LOWER:

将所有字段都小写显示

CASE_UPPER:

所有字段都大写显示

CASE_NATURAL:

原本怎么样就怎么样

ATTR_ERRMODE:

错误模式,当pdo出现错误的时候到底使用哪种模式进行处理

ERRMODE_SILENT:

静默模式,默认的出错了不管

ERRMODE_WARNING:

警告模式,如果出错了就会报出警告

ERRMODE_EXCEPTION:

异常模式,如果出错会采用异常来处理(PDOException)

ATTR_PERSISTENT:

当前对Mysql服务器的连接是否是长连接

TRUE:

是长连接(长连接的使用必须要配合:

Apache(connection:

keepAlive),Mysqld)

FALSE:

默认的,非长连接

什么情况下使用长连接?

1.不同的脚本的执行间距非常短,同时每个脚本都要操作数据库(Mysql:

mysql_pconnect())

PDO异常处理

异常处理:

当PHP碰到错误的时候,会直接报错,错误处理会变得相当麻烦。

后来,当错误发生之后,会将错误信息不再直接输出,放到一个类的对象里(PDOException)

要使用PDO异常处理

1.需要将错误处理模式变成异常模式

2.所有可能出错的语句都必须放到错误捕捉语句块里

try{

//错误捕捉语句块

//凡是有可能出现错误的语句都放在这

//一旦出错会立即进入catch语句,把所有的错误信息放到PDOexception$e里面

}catch(PDOExecption$e){

//将错误信息进行处理

}

有的时候,如果数据执行没有任何错误,但是就是不符合指定的业务逻辑。

一旦出现业务逻辑错误,异常是没有办法捕捉(异常只捕捉语法错误),一般认为的去通过判断语句的执行(结果),主动抛出异常,从而结束错误程序的运行。

thrownewPDOException;

封装自己PDO

见代码:

MyPDO.class.php

反射

反射就是将其他类的结构给反应出来,从而可以对类的结构进行了解便于对类的使用。

Reflection。

ReflectionClass:

export(要反射的类名)

ReflectionClass类

介绍几个方法

getConstants:

获取常量

getProperties:

获取所有属性

getMethods:

获取所有方法

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1