PDO扩展
来源:互联网 发布:require.js 2.3.5 编辑:程序博客网 时间:2024/06/13 13:28
PDO扩展技术
目录
PDO扩展技术...1
一、PDO扩展技术...2
1、什么是PDO..2
2、为什么需要PDO..2
3、开启PDO扩展(php.ini)...2
4、使用phpinfo函数判断pdo_mysql是否开启成功...3
二、PDO类...3
1、与PDO相关的几个类...3
2、PDO类...3
3、PDO中的执行操作(增加、修改、删除)...4
4、PDO中的查询操作...6
5、PDO中的遍历操作...7
三、PDO中的预处理...9
1、为什么需要预处理...9
2、MySQL中的预处理...10
3、PDO扩展中的预处理功能...11
4、使用bindParam实现参数绑定(推荐)...12
四、PDO中的事务处理...14
1、什么是事务处理...14
2、事务处理的应用场景...14
3、MySQL中的事务处理...14
4、PDO中的事务处理功能...15
五、PDO中的异常类...16
1、什么是异常...16
2、异常发生时的执行流程...16
3、PDO中的异常捕获...16
4、PDO中的逻辑错误(手工抛出异常)...17
5、使用PDO属性实现捕获逻辑异常...18
六、PDO中属性的获取与设置...19
1、属性的获取与设置...19
2、PDO中常用的属性..
一、PDO扩展技术
1、什么是PDO
PHP Data Object :PHP 数据 对象
2、为什么需要PDO
3、开启PDO扩展(php.ini)
①找到php目录下的php.ini配置文件
②开启pdo_mysql.dll扩展(按需加载)
③重启Apache软件,如下图所示:
4、使用phpinfo函数判断pdo_mysql是否开启成功
在浏览器中,使用http://localhost主机打开对应的php文件,如下图所示:
二、PDO类
1、与PDO相关的几个类
PDO类 :PDO的核心,主要用于数据的连接、发送SQL语句等…
PDOStatement类 :主要用于解析结果集,实现预处理、事务处理等特殊功能…
PDOException类 :主要用于捕获PDO异常
2、PDO类
①构造函数
PDO::__construct() ( string $dsn [, string$username [, string $password ]] )
$dsn :数据源 ,字符串类型 ,格式:mysql:host=localhost;dbname=project
$username :用户名,连接数据库的用户名
$password :密码,连接数据库的密码
示例代码:
运行结果:
②手工关闭pdo对象
$pdo = null;
或
unset($pdo);
pdo扩展库中没有提供相应的关闭、销毁对象的功能,所以可以使用以上两种方式关闭pdo对象。
3、PDO中的执行操作(增加、修改、删除)
要用到的知识点:
• int PDO::exec ( string $statement )
主要功能:实现对SQL语句的执行操作,返回的是受影响的行数。
参数说明:
$statement :要执行的SQL语句(要求是insert/update/delete)
①增加操作
示例代码:
要用到的知识点:
• string PDO::lastInsertId()
主要功能:返回最后一条插入数据的id。
示例代码:
②修改操作
③删除操作
4、PDO中的查询操作
要用到的知识点:
• PDOStatement PDO::query ( string $statement )
主要功能:实现对SQL语句的查询操作(针对select语句),返回PDOStatement对象
参数说明:
$statement :就代表要执行的select查询语句。
示例代码:
运行结果:
要用到的知识点:
• int PDOStatement::rowCount ( void ) :返回数据表中的总行数
• int PDOStatement::columnCount ( void ) :返回数据表中字段的总列数
示例代码:
5、PDO中的遍历操作
要使用到的知识点:
• mixed PDOStatement::fetch (int $fetch_style) :实现对数据的遍历输出,每次只能遍历一条记录,然后指针向下移动一位!
参数说明:
PDO::FETCH_ASSOC:把一条记录遍历到关联数组中
PDO::FETCH_NUM:把一条记录遍历到索引型数组中
PDO::FETCH_BOTH:把一条记录遍历到混合型数组中
PDO::FETCH_OBJ:把一条记录遍历到对象中
PDO::FETCH_BOUND(bindColumn) :把某个变量绑定到结果集中的某个列
示例代码:PDO::FETCH_ASSOC
示例代码:PDO::FETCH_BOUND(bindColumn)
要用到的知识点:
• array PDOStatement::fetchAll()
主要功能:把数据表中的记录返回到一个二维数组中
示例代码:
要用到的知识点:
• string PDOStatement::fetchColumn ([ int $column_number = 0 ] )
主要功能:遍历结果集当前行的某一列信息
参数说明:
$column_number :第几列,从0开始
示例代码:
三、PDO中的预处理
1、为什么需要预处理
①PHP与MySQL执行流程
如上图所示,以上程序在使用过程中会存在一个弊端,我们如果执行的SQL语句是一致的,那么每一次都要重新发送SQL语句,这对服务器的带宽也是一种浪费。
如上图所示,以上程序主要是实现对数据表的插入操作,但是由于每次执行的SQL语句都是一致的,所以其很多资源都是重复的,但是受到PHP与MySQL操作流程的限制,必须要这样操作,那么有没有一种简单的方法,如果SQL语句形式一致,只有参数不同,我们可不可以只发送参数呢?
答:预处理功能就是在SQL语句结构与形式相同的情况下,只有参数不同所采用的一种数据处理机制,其极大的减少了带宽的浪费。
2、MySQL中的预处理
基本语法:
//1、创建预处理语句
prepare 预处理指令 from SQL语句(insert/delete/update/select)
//2、设置参数
set @value = value;
//3、执行预处理
execute 预处理指令;
示例代码:
①创建预处理语句
②设置参数
③执行预处理语句
④返回执行结果
3、PDO扩展中的预处理功能
要用到的知识点:
• PDOStatement PDO::prepare ( string $statement) :定义预处理语句
• bool PDOStatement::execute ([ array $input_parameters ] ) :执行预处理语句
示例代码:
示例代码:
问题:在预处理功能使用时,应该使用文本标识还是使用问号呢?
答:对于这个问题,没有严格的规定,你既可以使用文本标识也可以使用问号,两者的功能都是一致的,唯一的不同就是语法的不同。
①如果使用文本标识,其在数据传递时,要求数组是一个关联型数组
②如果使用问号标识,其在数据传递时,要求数组是一个索引型数组,索引从0开始
4、使用bindParam实现参数绑定(推荐)
要使用到的知识点:
• bool PDOStatement::bindParam ( mixed $parameter , mixed&$variable)
主要功能:实现对参数的绑定
参数说明:
$parameter :要绑定的参数
特别注意:如果以上参数,使用的是?问号标识,其绑定时索引是从1开始的!
&$variable :要设置的参数值,按引用传递
示例代码:
示例代码:
四、PDO中的事务处理
1、什么是事务处理
事务处理主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!
在事务处理中,所有步骤(操作)要么都成功,要么都失败。
如果所有步骤都成功,则认为事务处理成功
如果有一个步骤出现了问题,则认为事务处理失败
2、事务处理的应用场景
小强:有钱,银行卡:2000元
旺财:缺钱,银行卡:0.1元
旺财管小强借钱,执行步骤:
①小强到银行柜台办理转账业务,填写账号(旺财),柜台工作人员根据账号进行转账操作。
小强银行卡扣款1000元,还剩1000元。
转账中间出现了问题:数据库服务器突然断电啦…
②旺财到ATM机前面输入账号,查询到账情况。
旺财银行卡增加1000元,还剩1000.1元。
所谓的事务处理就是要么交易同时成功,则提交;如果交易有一方失败,则回滚。
3、MySQL中的事务处理
特别注意:如果想实现事务处理功能,必须有一个前提:你使用的数据表必须是InnoDB引擎,否则无法实现事务处理功能。
①开启事务
1)标准事务:start transaction;
当提交或回滚一个事务之后,事务结束。接下来的操作不在事务操作范围之内。
2)语句事务:set autocommit = 0;
当提交或回滚一个事务之后,事务不会终止,后面的操作仍处于事务之中。
②提交事务:commit;
③回滚事务:rollback;
示例代码:
如上图所示:当开启事务后,其对数据表的所有操作并没有实时的写入到硬盘中。
如果确认删除(交易成功),则可以通过commit提交事务:
如果后悔删除(交易失败),则可以通过rollback回滚事务:
4、PDO中的事务处理功能
要使用到的知识点:
①开启事务
• bool PDO::beginTransaction ( void )
②提交事务
• bool PDO::commit ( void )
③回滚事务
• bool PDO::rollBack ( void )
示例代码:
五、PDO中的异常类
1、什么是异常
PHP 5 提供了一种新的面向对象的错误处理方法。
异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程。这种情况称为异常。
2、异常发生时的执行流程
①当前代码状态被保存
②代码执行被切换到预定义的异常处理器函数
③根据情况,处理器也许会从保存的代码状态重新开始执行代码,终止脚本执行,或从代码中另外的位置继续执行脚本。
3、PDO中的异常捕获
基本语法:
try {
存在潜在错误的代码;
if(逻辑错误) {
//手工输出异常
throw new PDOException(‘错误的文本信息’,’错误号’);
}
} catch(PDOException $e) {
echo ‘错误号:’.$e->getCode();
echo ‘错误行号:’.$e->getLine();
echo ‘错误的文本信息:’.$e->getMessage();
}
示例代码:
4、PDO中的逻辑错误(手工抛出异常)
运行结果:
5、使用PDO属性实现捕获逻辑异常
要使用到的知识点:
bool PDO::setAttribute ( int $attribute ,mixed $value )
主要功能:设置属性
参数说明:
$attribute :要设置的属性
$value :要设置的属性值
PDO::ATTR_ERRMODE :PDO异常级别
①PDO::ERRMODE_SILENT :常规错误,默认
②PDO::ERRMODE_WARNING :警告错误
③PDO::ERRMODE_EXCEPTION :异常错误
示例代码:
运行结果:
六、PDO中属性的获取与设置
1、属性的获取与设置
要用到的知识点:
设置:set 获取 :get 属性 :attribute
bool PDO::setAttribute ( int $attribute ,mixed $value ) :设置属性
mixed PDO::getAttribute ( int $attribute ) :获取属性
参数说明:
$attribute :要设置或获取的属性
$value :要设置的属性值
2、PDO中常用的属性
①PDO::ATTR_AUTOCOMMIT :自动提交,常用于事务处理(语句事务)
参数值:
1 :自动提交
0 :关闭自动提交
②PDO::ATTR_CASE :结果集大小写
参数值:
PDO::CASE_LOWER(2):把结果集(字段名称)全部转化为小写
PDO::CASE_UPPER(1):把结果集(字段名称)全部转化为大写
PDO::CASE_NATURAL(0):正常返回
③PDO::ATTR_PERSISTENT :长连接
名词解析:
短连接:连接 à 发送SQL语句à 执行SQL语句 à 关闭
长连接:连接 à a发送SQL语句à 执行SQL语句 à a发送SQL语句 à 执行SQL语句 …
示例代码:获取常用属性值
示例代码:设置常用属性值
七、课程总结
1、课程总结
①PDO扩展技术
PDO的基本概念以及为什么需要PDO
②PDO类(增删改查)
增删改:$pdo->exec($sql) 返回受影响的行数
查询:$pdo->query($sql) 返回PDOStatement类,fetch方法、fetchAll方法、fetchColumn方法
③PDO中的预处理
减少SQL语句的传递,只传递相关的参数,这样可以减少带宽的浪费
prepare stmt1 from ‘insert into tb_admin values (null,?,?,?)’;
设置参数
set @参数 = 参数的值;
执行预处理
execute stmt1 using @参数;
④PDO中的事务处理
开启事务beginTransaction()
提交事务commit()
回滚事务rollback()
⑤异常类PDOException
try {
//存在潜在错误的语句
if(逻辑错误) {
//手工抛出异常
throw new PDOException(‘错误信息’,’错误号’);
}
} catch(PDOException $e) {
echo$e->getCode();
echo$e->getLine();
echo$e->getMessage();
}
⑥属性的设置与获取
setAttribute
getAttribute
- PDO扩展
- centos安装pdo扩展,pdo-mysql扩展
- pear: Pager_Wrapper PDO扩展
- PHP PDO扩展 ----- PDOstatement
- php 安装pdo 扩展
- 安装mysql PDO扩展
- PHP安装pdo扩展
- php扩展之PDO
- 安装PDO扩展
- pdo扩展工具类
- ubuntu下安装pdo扩展
- php之pdo扩展库
- centos php pdo-mysql扩展
- ubuntu下开启pdo扩展
- php中pdo扩展安装
- ubuntu php 开启pdo扩展
- ZendFramework中打开Pdo扩展连接MySql
- Linux 下 PHP 扩展 PDO 编译安装
- 洛谷P2330 [SCOI2005]繁忙的都市
- Tree Traversals (25)
- 陈默:如何做不焦虑的家长 喜马拉雅课程付费百度云网盘资源下载mp3免费音频
- strlen计算字符串长度
- 动态规划(1)——斐波那契数列
- PDO扩展
- 阿里巴巴Java开发手册Eclipse插件 使用指南
- forward与redirect的认识
- 编码问题
- 【20171019】python_语言设计(10)库与软件
- Class类的使用
- 1214: [视频]【计算几何】凸包
- 关于QT 无边框窗口移动问题
- 互联网公司校园招聘时间点