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的配置与启用

1-4 PDO连接数据库

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

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

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

第二章 PDO对象的使用

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

数据源$dsn(data source name)

驱动器名称:mysql

主机名:localhost

数据库名:imooc

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

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

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

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

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

删除记录

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

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

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

执行结果

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

执行结果:

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

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

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

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

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

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

执行结果:

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

执行结果:

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

执行结果:

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

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

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

返回的结果是二维数组:

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

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

返回关联索引

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

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

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

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

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

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

结果:

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

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

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

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

遍历数据库连接的属性:

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

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

第三章 PDOStatement对象的使用

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

Login.html

doAction.php

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

使用:号

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

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

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

绑定列值实现查询。

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

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

结果:

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

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

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

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

和列有关的方法到此结束

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

?号

:号

来源:

PHP PDO Mysql数据库操作类视频教程-慕课网

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LQxdp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值