php pdo 方法,PHP之pdo操作数据库

PDO概述

1、PDO简介

PDO是PHP数据对象(PHP Data Object)的缩写。

PDO扩展为PHP访问不同数据库定义了一个轻量级的、一致性的接口;

PDO作用是统一各种数据库的访问接口,PDO让跨数据库的使用更具亲和力;

有了PDO,您不必再使用mysqli函数、oci函数或者mssql函数,也不必再为它们封装数据库操作类,只需要使用PDO接口中的方法就可以对各种数据库进行操作。

PDO是一个第三方的类,默认已经集成到PHP中了。

2、PDO的访问流程图

222c1c4725a5530c93f2a99c4c237f86.png

ba69ef1733e82aa2338cb92090f8fd3e.png

9a6ebc77e33da1893292f875a8f77f92.png

3、创建PDO类的对象

描述:创建一个表示数据库连接的 PDO 对象。

语法:PDO::__construct ( string $dsn [, string $username [, string $password]] )

参数:

$dsn,数据源名称或叫做 DSN,包含了请求连接到数据库的信息。通常,一个 DSN 由 PDO 驱动名、紧随其后的冒号、以及具体 PDO 驱动的连接语法组成。

例如:$dsn = “mysql : host=127.0.0.1; port=3306; dbname=db; charset=utf8”

$username,数据库用户名。

$password,数据库密码。

返回值:成功则返回一个PDO对象。

85725398c00218ef693b078f2a4ffdef.png

PDO对象常用方法

1、PDO::exec()方法

描述:执行一条 SQL 语句,并返回受影响的行数

语法:int PDO::exec ( string $sql )

参数:$sql要被预处理和执行的 SQL 语句。

注意:不会从SELECT语句返回结果。

返回:返回受修改或删除 SQL 语句影响的行数。如果没有受影响的行,则返回 0。

97ede405241ae8776cabbba6a3e2500a.png

2、PDO::query()方法

描述:执行一条SQL语句,返回一个结果集对象( PDOStatement )。

语法:public PDOStatement PDO::query ( string $statement )

提示:主要用于SELECT、SHOW语句。

返回:执行成功返回PDOstatement对象,执行失败返回FALSE。

f6541bcc827c7d620fec47fe29ab8d44.png

3、PDO::lastInsertId()方法

描述:返回最后插入行的ID或序列值

语法:string PDO::lastInsertId ( void )

返回:返回最后插入行的ID。

3e2de4e99d92704ce340aa3ee591f74f.png

4、PDO::setAttribute()方法

描述:设置数据库句柄属性

语法:bool PDO::setAttribute ( int $attribute , mixed $value )

提示:PDO内置了一些可用的通用属性(详细见手册)

PDO::ATTR_CASE:强制列名为指定的大小写。

PDO::ATTR_ERRMODE:错误报告

PDO::ATTR_DEFAULT_FETCH_MODE: 设置默认的提取模式。

返回:成功时返回 TRUE, 或者在失败时返回 FALSE。

062c70a4e74474901692306f76393399.png

PDOStatement对象常用方法

1、PDOStatement::fetch()方法

描述:从结果集中获取一行,并向下移动指针

语法:mixed PDOStatement::fetch ([ int $fetch_style ] )

参数:$fetch_style,控制下一行如何返回给调用者。

PDO::FETCH_ASSOC,返回一个索引为结果集列名的数组

PDO::FETCH_BOTH(默认),返回一个索引为结果集列名和以0开始的列号的数组

PDO::FETCH_NUM:返回一个索引为以0开始的结果集列号的数组

返回:此函数(方法)成功时返回的值依赖于提取类型。在所有情况下,失败都返回 FALSE 。

bf2769334f517413416e9d02314c5a22.png

2、PDOStatement::fetchAll()方法

描述:返回一个包含结果集中所有行的数组

语法:array PDOStatement::fetchAll ([ int $fetch_style ] )

参数:$fetch_style,控制下一行如何返回给调用者。

PDO::FETCH_ASSOC,返回一个索引为结果集列名的数组

PDO::FETCH_BOTH(默认),返回一个索引的数组

PDO::FETCH_NUM:返回一个索引为以0开始的结果集列号的数组

4755aebff85da9dea40d3edc6027ad10.png

3、PDOStatement::rowCount()方法

描述:返回受上一个 SQL 语句影响的行数

语法:int PDOStatement::rowCount ( void )

返回:返回上一个由对应的 PDOStatement 对象执行SELECT、DELETE、 INSERT、或 UPDATE 语句受影响的行数。

提示:要想使用该函数,必须使用 $pdo->query() 返回 PDOStatement 对象。

2e1c579f31731880e616f0116c83c43f.png

PDO错误处理

1、PDO支持三种错误模式

静默模式(Silent):错误发生后,不会主动报错,是默认的模式;

警告模式(Warning):错误发生后,通过PHP标准来报告错误;

异常模式(Exception):错误发生后,抛出异常,需要捕捉和处理;

提示:可以通过 PDO::setAttribute() 更改错误模式。

2、静默模式(Slient)

在静默模式下,当有错误发生时,不会显示在页面上;

此时,可以通过PDO的PDO::errorCode()和PDO::errorInfo()两个方法,来获取错误信息。

e6fab985ce9cad385f10909e65e4c35b.png

3、警告模式(Warning)

因为默认报错模式是静默模式(silent),如果想报警告错误,必须使用setAttribute()方法提前设置。

8d22161f5af006ded977fa2996dc45a8.png

4、异常模式(Exception)

因为默认报错模式是静默模式(silent),如果想报异常错误,必须使用setAttribute()方法提前设置。

ff50804587dfa280dac7144ccd8d9245.png

8ff80b89ee37d0b74b8f8db1db8b0ad0.png

749a77ee0347c15dc35aaa16a2a956c3.png

7b6a70d6bac1893eb4690a50fb2501e0.png

SQL语句预处理

1、SQL语句执行过程

SQL语句的执行,分成两个阶段:编译和执行。

如果SQL语句,是第1次执行,先编译再执行。编译过程十分复杂,耗用系统资源,相对不太安全;

如果SQL语句(即相同的SQL语句),是第2次执行,直接从缓存中读取,无疑执行效率是最高的,也是比较安全的,可以有效避免SQL注入等安全问题;

08f2ef0bf66bfcc6b4ee699d7ebb5bab.png

2、PDO的SQL语句预处理步骤

(1)PDO完成预处理需要的步骤

先提取相同结构的sql部分!(将数据部分,可变的部分去掉)

编译这个相同的结构!将编译结果保存!

再将不同的数据部分进行替换!

执行即可!

(2)提取相同结构的SQL语句

在SQL语句中,使用命名参数和问号参数,来代替可变的数据。

使用占位符“:value”和“?”来代替可变的数据。

49f891aff0c29b9cdba703bf5ee017f7.png

(3)预编译相同结构的SQL语句

描述:执行预编译的SQL语句结构,并返回一个PDOStatement对象。

语法:public PDOStatement PDO::prepare ( string $statement )

返回:执行成功返回PDOStatement对象,失败返回FALSE。

3f0e9eda06503d8c2758fede9ba065ff.png

(4)给占位符绑定数据

描述:绑定一个值到预处理的 SQL 语句中的对应命名占位符或问号占位符。

语法:bool PDOStatement::bindValue ( mixed $parameter , mixed $value )

参数:

$parameter,参数标识符。对于使用命名占位符的预处理语句,应是类似 :name 形式的参数名。对于使用问号占位符的预处理语句,应是以1开始索引的参数位置。

$value,绑定到参数的值;

返回:成功时返回 TRUE, 或者在失败时返回 FALSE。

62363d07a72467d18656df406d53252e.png

(5)执行预处理的SQL语句

描述:执行一条预处理语句

语法:bool PDOStatement::execute( )

返回:成功时返回 TRUE, 或者在失败时返回 FALSE。

e10c2333a1ecf1a01f161275e585421c.png

3、实例:PDO的SQL语句预处理

22a22da8495381f26c9f145659e02e3b.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值