zoukankan      html  css  js  c++  java
  • 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 课后练习

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    Linux nfs服务讲解
    Linux nfs服务介绍
    牛客网题目-数组中只出现1次的数字
    牛客网中矩阵中的路径
    求链表的第一个公共节点
    C++中STL中简单的Vector的实现
    牛客网栈的压入,和弹出序列
    C++智能指针
    CI Weekly #22 | flow.ci 新版 iOS 构建流程的 4 大变化
    CI Weekly #21 | iOS 持续集成快速入门指南
  • 原文地址:https://www.cnblogs.com/qianjilou/p/6899225.html
Copyright © 2011-2022 走看看