DAY28-mysql扩展与预处理-查出问题的关键

Mysql扩展和Mysqli扩展

 

第 1 章 mysql扩展

1.1 基本介绍

mysql扩展是指: php程序可以通过mysql扩展来完成对mysql数据库操作.对应的dll文件是 php_mysql.dll 文件。 该文件在 ~php/ext/...

对应的示意图:

 

 

 

 

 

1.2 mysql扩展使用的步骤流程

 

 

 

 

 

 

 


 

第 2 章 mysqli扩展(重点)

2.1 mysqli扩展的基本介绍

(1) mysqli扩展和mysql扩展都可以完成对mysql数据库的操作.

(2) mysqli扩展可以看做是mysql扩展的升级版, i = improve

(3) mysqli扩展的性能比mysql扩展好,因此我们在新项目开发中,就不再使用mysql扩展, 新项目对mysql数据库的操作使用(mysqli, pdo).

(4) mysqli扩展支持面向对象开发, mysqli也支持面向过程

(5) 使用mysqli扩展前,需要引入一个dll文件, 该文件是 php_mysqli.dll, 该文件是安装php时有,在 ~/php/ext/php_mysqli.dll

 

2.2 mysqli扩展的使用原理图

 

 

 

2.3 快速入门案例

使用一个基本的案例来讲解mysqli扩展库对表的crud操作。

 

 

 

2.4 mysqli 使用的细节说明

如果执行的是dml语句,则返回bool

举例:

 

 

mysql_result 对象取出数据的方式有4

 

小结:在实际的开发中,我们推荐使用第一种方式.

细节-如何判断我们的dml语句是否真正影响了表

 

 

如何获取到刚刚添加的自增长id的值

 

 

2.5 上机练习

 

2.6 开发一个DAOMySQLi.class.php 工具类

基本的介绍: 封装一个更加完善的DAOMysqli.class.php 数据库操作类,同学们以后可以在项目开发中直接使用。

使用的场景: 我们在一个项目中,会经常使用到对mysql数据库的各种操作(crud),我们可以将这些操作封装到一个类中,当我们需要操作数据库时,直接new一个对象然后使用对象来操作数据库即可。

 

 

说明:

(1) DAO, data access object, 数据访问对象,专门对mysql进行操作.

(2) DAOMySQLi.class.php  单例模式

走代码(php基础/OOP/sql语句/封装思路) => 默写 DAOMySQLi.class.php

 

 

 

 

 

 

 

 

 

2.7 关于DAOMySQLi.class.php 文件的完善

 

(1) 如果我们明确的知道,sql 只会返回一条记录, 就调用 fetchOne方法

(2) 编写一个成员方法,获取到刚刚添加的数据的自增长的id

2.8 晚上的作业练习

 

将原来使用的mysql扩展,改成我们现在使用的DAOMySQLi.class.php 来完成.

2.9 mysqli扩展增强-事务控制

关于事务的概念,我们在前面mysql数据库时讲过了,现在我们直接演示如何在mysqli中,进行事务控制 。

 

 

2.10 mysqli扩展-批量执行sql语句

先看一个需求

先看一个需求:有时,我们需要一次性执行多条sql语句,比如批量增加用户,这时如果单条单条的向mysql数据库发送sql指令,效率不高,这时可以考虑使用批量执行sql语句的方式. 

传统的执行sql语句的方式是:

 

批量执行sql语句的基本语法

$sqls = "$sq1;$sql2;$sql3..............";

$mySQLi->multi_query($sql3);

说明: 在拼接$sqls语句是,最后那个sql语句不要给;.

案例说明1

 

将三个用户一次性添加到mysql数据库中,accout;

 

 

关于批量的执行dml语句的细节说明

(1) 批量执行sql语句分成两大类(dml[insert,update,delte], dql[select]), 两大类之间不要混用.

(2) 批量执行sql语句,返回的结果是以一条sql执行的结果为准, 当某条dml错误了,后面的代码就不执行, 但是错误之前的sql还是执行成功的.

批量执行select 语句(因为会返回多个结果集)

 

走代码:

 

 

 

2.11 mysqli扩展的-预处理技术

看一个需求

现在需要向mysql数据库添加100个用户,请问如何实现?

分析sql语句执行的原理

传统的sql语句执行的流程

 

使用了预处理技术sql语句执行的流程

 

 

预处理技术的案例

(1)案例说明: 使用预处理语句快速入门案例

执行dml 语句(没有结果集返回)

需求: 请使用预处理的方式,向数据库添加三个用户  

代码说明:

 

 

 

 

 

案例2

需求: 请使用预处理的方法,查询所有id>5的用户 id,name,balance(id可能变化)

代码:

 

 

 

2.12 预处理的防止sql注入

看一个sql注入的实际案例

 

 

解决注入的方式有

(1) 使用PDO

(2) 使用一些好的工具类,工具类有自身的过滤sql语句的功能, 框架/函数

addslashes , mysqli_real_escape_string()

(3) 预处理方法-演示

 

 

2.13 课后练习

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2017-05-24 15:37  千机楼  阅读(242)  评论(0编辑  收藏  举报