PDO技术--学习笔记

目录

第一章 PDO简介

1-1 PDO简介

1-2 PDO特性:

1-3 PDO的配置与启用

1-4 PDO连接数据库

第二章 PDO对象的使用

2-1 [PDO]exec()方法进行建表操作

2-2 [PDO]exec()方法执行插入记录的操作

2-3 [PDO]用exec方法实现更新、删除的SQL操作

2-4 [PDO]errorCode()和errorInfo()方法查看错误信息

2-5 [PDO] query()方法执行查询语句

2-6 [PDO]prepare()和execute()方法执行查询语句

第一种:直接设置参数,选择返回结果集的一个方式。(关联、索引)

第二种:使用setfetchMode方法设置参数,然后直接调用方法。

2-7 [PDO]设置数据库连接属性

直接设置数据库连接属性:

使用PDO对象的第四个参数设置PDO的连接属性:

第三章 PDOStatement对象的使用

3-1 [PDO]quote()方法防止SQL注入

3-2 [PDO]预处理语句中占位符(:和?)的使用

3-3 [PDO]bindParam()方法绑定参数

3-4 [PDO]bindValue()方法绑定参数

3-5 [PDO]bindColumns()方法绑定参数

3-6 [PDO]fetchColumns()方法从结果集中返回一列

3-7 [PDO]debugDumpParams()方法打印一条预处理语句

来源:


第一章 PDO简介

1-1 PDO简介

       PDO(PHP Data Object),数据库访问抽象层,统一各种数据库的访问接口。

       PHP可以兼容市面上所有的数据库,但是使用每种数据库的命令都有所不同,各种数据库用互不相同的API完成相同的功能,造成了应用程序之间难以维护和移植的问题,造成此种现象的原因是抽象度不够,访问接口不统一,因此才有了PDO的出现。

       PDO出现是为了移植到不同的数据库更加方便。

1-2 PDO特性:

1.编码一致性

PDO提供可用于各种数据库的单一接口。

2.灵活性

PDO在运行时需加载数据库驱动程序。所以不需要每次在使用不同的数据库时重新配置或重新编译PHP。

3.高性能

PDO是由C语言编写的,因此性能很好。

4.面向对象特性

       PDO用的是PHP5面向对象的特性,可以获得更高效的数据库通信,PDO扩展只是一个抽象的接口层利用PDO本身不能实现任何数据库的操作。必须使用一个特定的形式把各自的特色表现出来。

1-3 PDO的配置与启用

PDO技术--学习笔记_第1张图片

1-4 PDO连接数据库

1、通过参数形式连接数据库

PDO技术--学习笔记_第2张图片

2、通过URI的形式连接数据库

3、通过配置文件的形式连接数据库

 

第二章 PDO对象的使用

PDO技术--学习笔记_第3张图片

2-1 [PDO]exec()方法进行建表操作

数据源$dsn(data source name)

驱动器名称:mysql

主机名:localhost

数据库名:imooc

 

通过exec方法可以执行创建一个数据表的sql语句

PDO技术--学习笔记_第4张图片

2-2 [PDO]exec()方法执行插入记录的操作

lastInsertId()返回最后插入的ID号。

PDO技术--学习笔记_第5张图片

2-3 [PDO]用exec方法实现更新、删除的SQL操作

更新记录,返回一条记录受影响。

PDO技术--学习笔记_第6张图片

删除记录

注意:exec()函数对select函数没有作用,查询操作不返回受影响的行数。

2-4 [PDO]errorCode()和errorInfo()方法查看错误信息

PDO技术--学习笔记_第7张图片

2-5 [PDO] query()方法执行查询语句

PDO技术--学习笔记_第8张图片

执行结果

返回的是一个statement对象,我们要查看里面的内容:

PDO技术--学习笔记_第9张图片

执行结果:

使用了foreach方法显示内容。如果想要显示所有的内容,只需将where id去掉即可。

#通过query方法也可以实现数据的增加,但是我们通常只用query执行查询操作。增加造作我们通常用exec去实现。

2-6 [PDO]prepare()execute()方法执行查询语句

通过条件进行查询,这两个函数是第二种查询的方法,通过预处理的形式进行查询。

prepare()         //准备要执行的SQL语句,返回PDOStatement对象。

execute()        //执行一条预处理语句。

PDO技术--学习笔记_第10张图片

执行结果:

执行结果返回的是一个pdostatement对象。通过execute()方法执行预处理语句,返回true代表有记录

PDO技术--学习笔记_第11张图片

执行结果:

通过fetch()方法得到结果集中的一条记录:

执行结果:

当结果集中有很多记录,可以通过循环fetch将所有记录都读取出来:

PDO技术--学习笔记_第12张图片

第一种:直接设置参数,选择返回结果集的一个方式。(关联、索引)

Fetchall方法可以返回一个包含结果集中所有行的数组:

PDO技术--学习笔记_第13张图片

返回的结果是二维数组:

设置返回的是一个object对象:

设置返回二维数组中的关联部分

PDO技术--学习笔记_第14张图片

返回关联索引

第二种:使用setfetchMode方法设置参数,然后直接调用方法。

setFetchMode()         //为语句设置默认的获取方式

PDO技术--学习笔记_第15张图片

 

2-7 [PDO]设置数据库连接属性

与数据库连接相关的两个方法:

直接设置数据库连接属性:

我们也可以通过PDO对象的第四个属性设置数据库连接属性。

PDO技术--学习笔记_第16张图片

结果:

通过set设置后改变了连接属性。

数据库连接的相关属性:自动提交(AUTOCOMMIT)、默认错误处理模式(ERRMODE)、字段名称是否大小写(CASE)、数据库是否持久连接(PERSISTENT)。

有些属性也不是我们的所有驱动都支持:超时设置(TIMEOUT)、返回空字符串转换为SQL的null(ORACLE_NULLS)

其他:SERVER_INFO、SERVER_VERSION、CLIENT_VERSION、连接状态(CONNECTION_STATUS)

遍历数据库连接的属性:

PDO技术--学习笔记_第17张图片

PDO技术--学习笔记_第18张图片

Constant函数可以返回常亮的值。

 

使用PDO对象的第四个参数设置PDO的连接属性:

PDO技术--学习笔记_第19张图片

第三章 PDOStatement对象的使用

PDO技术--学习笔记_第20张图片

3-1 [PDO]quote()方法防止SQL注入

Login.html

PDO技术--学习笔记_第21张图片

doAction.php

PDO技术--学习笔记_第22张图片

rouCount()       //返回上一个SQL语句影响的行数。

命令成功执行,返回值为1,代表查询到了结果。(rowCount函数查询中返回结果集中记录的条数,对于INSERT、UPDATE、DELETE返回的是受影响的行数。)

这种登录页面存在SQL注入漏洞: ‘ or 1=1 # ,密码随便输入或者不输入,即可查询出所有的结果。

 

在PDO中通过quote方法防止SQL注入:

PDO技术--学习笔记_第23张图片

3-2 [PDO]预处理语句中占位符(:和?)的使用

通过预处理语句可以防止SQL注入,可以编译一次,多次执行。

预处理语句中的占位符有两种写的形式:

第一种防SQL注入的方法(以:的形式):

PDO技术--学习笔记_第24张图片

第二种防SQL注入的方法(以?的形式):

PDO技术--学习笔记_第25张图片

多次执行一条SQL语句的时候也可以通过绑定参数到指定变量的形式。

3-3 [PDO]bindParam()方法绑定参数

bindParam()           //绑定一个参数到指定的变量名。

绑定参数的时候可以有三个参数:

第一个参数是占位符时使用的语法(使用?传的是索引号1、2、3…)

第二个参数是给你一个参数绑定到变量的值。(取的是变量的引用,不可以直接写的形式)

第三个可以指定一下变量的类型

 

形式进行绑定实现多次执行循环语句实现添加。(给变量赋值几次,就执行几次添加)

PDO技术--学习笔记_第26张图片

红框表示写几次,INSERT语句便执行几次。

 

形式进行绑定实现多次执行循环语句实现添加。

PDO技术--学习笔记_第27张图片

 

使用命名参数占位符:号执行删除记录的操作

PDO技术--学习笔记_第28张图片

id号小于10的记录被删除。

 

3-4 [PDO]bindValue()方法绑定参数

       当你在执行插入的SQL语句时,我们可以使用bindValue()函数将某一个重复插入的值绑定到参数,并且只绑定一次即可。如果想要再次执行,不必再重复绑定email。

PDO技术--学习笔记_第29张图片

PDO技术--学习笔记_第30张图片

使用:号

PDO技术--学习笔记_第31张图片

3-5 [PDO]bindColumns()方法绑定参数

我们可以用bindColumns()方法将你的一列绑定到指定的参数

bindColumn()           //绑定一列到一个PHP变量。

PDO技术--学习笔记_第32张图片

绑定列值实现查询。

columnCount()           //返回结果集中的列数。

getColumnMeta()      //返回结果集中一列的元数据。

PDO技术--学习笔记_第33张图片

结果:

PDO技术--学习笔记_第34张图片

3-6 [PDO]fetchColumns()方法从结果集中返回一列

fetchColumn()              //从结果集中的下一行返回单独的一列。

PDO技术--学习笔记_第35张图片

结果返回第一列的第一行数据(索引从0开始,即第0列是username)

因为每fetchColumns()一次相当于讲你的指针向下移动了一行。如果同时输出,结果会是第一列的第一行和第二列的第二行。

PDO技术--学习笔记_第36张图片

PDO技术--学习笔记_第37张图片

和列有关的方法到此结束

 

3-7 [PDO]debugDumpParams()方法打印一条预处理语句

?号

PDO技术--学习笔记_第38张图片

PDO技术--学习笔记_第39张图片

:号

PDO技术--学习笔记_第40张图片

PDO技术--学习笔记_第41张图片

来源:

http://www.imooc.com/learn/164

你可能感兴趣的:(PHP)