zoukankan      html  css  js  c++  java
  • 20150113--PDO增删改查+封装PDO类-02

    预处理

    预处理:提前处理,在一次数据库连接过程中,可以提前将要执行的SQL语句发送给服务器,

    预处理语法

    1. 准备预处理:将要执行的SQL语句起个别名然后发送给服务器。

    prepare 预处理名字 from ‘要执行的SQL语句’;

    clip_image002

    2. 执行预处理。

    execute 预处理名字;

    clip_image004

    预处理使用参数

    1. 准备预处理:有些地方可以事先使用占位符“?”来代替真实数据。

    clip_image006

    2. 如果预处理有参数的话,那么必须携带参数。参数必须是通过变量传入。

    execute 预处理名字 using 变量;

    clip_image008

    预处理意义

    1. 节省带宽(执行一次较长的SQL语句,每次使用的时候都只需要提供变量)

    PDO预处理

    预处理执行流程

    1. 发送预处理语句

    clip_image010

    2. 执行预处理

    在PDO使用预处理的过程中,一个PDOStatement类的对象只能同时操作一个预处理,所以要使用多个预处理,必须在PDO::prepare()方法的返回值的,使用不同的变量来保存对象。

    PDOStatement::execute():执行预处理

    2.1 预处理绑定参数1:使用参数数组

    采用数组的形式来给预处理赋值

    clip_image012

    2.2 使用bindParam来绑定参数

    bindParam():就是给一个变量绑定一个值

    clip_image014

    2.3 使用bindValue来绑定参数

    bindValue():与bindParam基本一样

    clip_image016

    bindParam&bindValue

    bindParam胜了bindValue:使用的引用传值方式进行传参,参数可以循环利用。

    利用参数的修改可以直接修改execute所执行的结果。

    问号占位符

    clip_image018

    绑定参数

    clip_image020

    数组绑定参数

    clip_image022

    注意:在使用PDO进行预处理的时候,尽量不要使用问号占位符,使用变量(:名字)

    PDO事务处理

    PDO的事务处理完全遵照mysql下面的事务处理来实现,只是将不同的动作封装到不同的方法中。

    事务流程

    1. 开启事务

    clip_image024

    2. 事务处理:进行多次有关联的写操作

    clip_image026

    3. 结束事务

    a) 成功:commit方法

    clip_image028

    b) 失败:rollback方法

    clip_image030

    注意:要支持事务,必须要确保数据库的存储引擎是InnoDB。

    PDO属性

    PDO属性不是指的PDO类的对象里面所保存的属性,而是指的PDO对象在操作数据的过程中应该按照某些指定的情况去处理数据。

    PDO属性不是真正的PDO类对象的属性,是数据库的属性

    对于属性操作:PDO提供两个方法,getAttribute方法获取属性的值,和setAttribute方法设置属性的值。

    这些属性都是以属性名和属性值的键值对的形式存在

    PDO::ATTR_AUTOCOMMIT:是否自动提交,默认都是自动提交,值是1

    clip_image032

    PDO::ATTR_CASE,代表数据库返回数据的时候,字段的大小写,默认是与数据库字段设计的大小写一致PDO::CASE_NATURAL

    clip_image034

    PDO::CASE_LOWER:全部字段小写(字段名)

    PDO::CASE_UPPER:全部大写

    PDO::CASE_NATURAL,默认自然的,不改变

    修改属性

    clip_image036

    PDO::ATTR_ERRMODE,mysql对出错的处理模式

    PDO::ERRMODE_SILENT:默认的,静默模式,出错不会报错

    PDO::ERRMODE_WARNING:警告模式,出错会给出一个警告

    PDO::ERRMODE_EXCEPTION:异常模式,出错会抛出一个异常

    clip_image038

    PDO::ATTR_PERSISTENT,连接的持久性,默认的是false,短连接

    TRUE:长连接,脚本执行结束,如果换一个脚本依然需要操作数据库,连接不会中断

    条件:mysql服务器开启长连接(默认不允许),Apache支持长连接(需要配置)

    FALSE:短连接,脚本执行结束一定会释放(断开)连接资源

    PDO异常

    异常其实错误,异常处理是一种将错误放到一个对应的对象里面,然后通过对象去对错误进行操作一种模式。

    异常处理的实现语法

    将所有有可能出现错误的语句,9都放到一个可以抓取异常的上下文:try;其次需要一个指定类型的数据类的对象来捕获异常,并进行异常处理:catch

    try{

    //所有有可能出错的语句,一旦出现就会立马进入到catch里面,而且将所有的错误信息放到异常处理类对应的对象里面

    }catch(异常处理类 对象名字){

    //错误处理的方式

    }

    要使用异常模式来抓取PDO可能出现的错误,那么必须将错误处理模式设置成异常模式

    clip_image040

    通常的处理方式

    clip_image042

    主动抛出异常:throw new PDOException

    clip_image044

    反射(不是今天的重点)

    在程序中,反射是在通过获得一个类,让类内部的结构给反射出来,能将类内部的属性,方法,常量给全部显示处理。(不会包含方法体)。

    反射意义:将类内部结构展示给程序员看,程序员看了结构之后能够更好的去操作类。

    在php中有一个类:ReflectionClass,用于反射的操作类

    该类中有一个静态方法:export()能够将一个对应的类的结构给反射出来(打印)

    clip_image046

    不单只可以通过反射类ReflectionClass来查看类的内部结构,还可以通过对象的形式去获取获取对应的数据信息。里面有三个方法,能够帮助我们去更好的了解一个类的使用。

    getProperties:获取所有的属性

    getMethods:获取所有的方法

    getConstants:获取所有的常量

    new ReflectionClass(‘类名’);

    clip_image048

    获取所有的方法:getMethods

    clip_image050

    获取所有属性:getProperties

    clip_image052

    获取常量:getConstants

    clip_image054

    封装PDO

    把PDO一些不方便的地方,进行再次封装,变的方便

    见代码:MyPDO.class.php

    作业:完善MyPDO类:增删改查都有(建议:对外接口做成protected)

  • 相关阅读:
    java基础部分的一些有意思的东西。
    antdvue按需加载插件babelpluginimport报错
    阿超的烦恼 javaScript篇
    .NET E F(Entity Framework)框架 DataBase First 和 Code First 简单用法。
    JQuery获得input ID相同但是type不同的方法
    gridview的删除,修改,数据绑定处理
    jgGrid数据格式
    Cannot read configuration file due to insufficient permissions
    Invoke action which type of result is JsonResult on controller from view using Ajax or geJSon
    Entity model数据库连接
  • 原文地址:https://www.cnblogs.com/lifushan/p/5419383.html
Copyright © 2011-2022 走看看