1、 key:获取当前下标 next:数组指针下移 rewind:重置指针 valid:判断当前指针是否有效,使用key函数判断数组下标快速排序:1.找到一个基准元素;2比较数组中其他所有元素;3.将与基准元素比较后的结果根据大小放到两个不同的数组中;4.数组递归调用函数自己;5.返回一个已经排好序的数组(array_merge() 递归点:数组 递归出口:数组元素只有一个(或者为空)的时候需求:一个项目,下面有两个团队:要求可以随意的切换数据库(mysql,Oracle),一个团队负责做mysql,一个团队负责做Oracle。(公共接口已经做好)但是以上解决方案需要用户每次去手动修改代码来继承不
2、同的类。PDOPDO:PHP Data Object,PHP数据对象(数据抽象层)作用:能够解决用户在需要使用不同的数据库的时候进行来回的切换,PDO能够自动的进行数据库的切换,而且还能将所有的有可能存在的不兼容的语法进行兼容性处理。加载PDO使用PDO之前必须要开启PDO扩展1. 在php.ini文件中找到PDO扩展开启Mysqlpdo扩展注:如果PHP版本比较低的情况下,需要额外的去开启pdo扩展,再开启pdo对应的数据库扩展2. 重启服务器使用PDOPDO这一套不单只是一个类,有三个类 PDO类:负责数据库的连接,分发还SQL语句的发送 PDOStatement类:结果集类,专门用来出来
3、查询的结果,还有其他功能(预处理) PDOException类:用异常机制处理PDO类所碰到的问题操作数据库步骤1. 连接认证:_construct($dsn,$user,$pass) $dsn:由两个部分构成:数据源,数据库信息mysql:host=localhost;port=3306;dbname=project$pdo = new PDO(mysql:dbname=project,root,root);2. 组织SQL语句3. 发送SQL语句给服务器,接收执行结果PDOStatement PDO:query:执行有结果集返回的查询语句4. 从结果集获取数据PDOStatement:fe
4、tch:从结果集中获取一行记录5. 关闭连接PDO没有提供关闭连接的方法unset(PDO对象);$pdo = null;PDO增删改查1. 新增数据2. 修改数据3. 删除数据4. 查询数据查询处理在查询得到的结果集处理时,默认的使用fetch得到的是一个混合数组,可以通过方法指定参数来修改获取数据的方式。fetch方法指定参数关联数组索引数组 fetchAll自定义获取所有结果集内容作业:使用while循环实现所有的结果集内容的遍历。fetchColumn意义1. 减少代码冗余2. 提高代码执行效率fetchObjectstdClass:标准类,空类$str = abcd;$o = (ob
5、ject)$str; /得到的对象就是stdClass对象指定自己类bindColumn与fetch为了操作方便,为了弥补fetchColumn只能获取一个字段值的缺陷。预处理在真正执行某条SQL语句之前,先将SQL语句准备好,在执行过程中再绑定数据语法:准备预处理prepare 预处理名字 from 要执行的SQL语句执行预处理 execute 预处理名字 using 变量预处理高级使用:可以在预处理过程中使用一些列不确定的内容。PDO预处理可以使用多种方式实现预处理:指的是在绑定数据进行执行的时候,可以有多种方式。使用数组指定预处理变量1. 准备预处理语句(发送给服务器,让服务器准备预处理
6、语句)prepare:类似exec将一条SQL语句发送给Mysql服务器2. 执行预处理:将要操作的数据发送给预处理语句,再执行预处理语句execute($array):数组用来传递对应的参数通过绑定变量bindParam:在执行预处理之前,将之前预处理语句所指定的变量进行赋值bindParam只能通过变量的形式进行赋值(引用传值)bindValue:与bindParam一样bindValue可以直接赋值(值传递)bindParam与bindValue的区别1. bindParam必须要先声明变量,再使用变量;bindValue可以直接使用值2. bindValue是一次性的,而bindPar
7、am可以无限使用(因为使用的引用传值,一旦变量的值进行改变,那么对应的组织SQL语句时所用到的变量的值也跟着改变)预处理语句使用原始?代替变量PDO事务处理事务处理流程1. 开启事务PDO:beginTransaction2. 事务操作所有的实务操作就是增删改3. 事务提交commit:成功后提交数据rollback:失败后回滚数据注意1. 要实现事务处理必须数据表的存储引擎为InnoDB2. 事务必须完整(开启提交)不适用PDO的事务处理,实现模拟事务。PDO属性设置设置PDO在处理数据的过程中采用什么方式去处理setAttribute:设置属性getAttribute:获取属性常用属性AT
8、TR_AUTOCOMMIT:设置当前连接Mysql服务器的客户端的SQL语句是否自动执行,默认是自动提交ATTR_CASE:当pdo从结果集中获取数据的时候,如何处理对应的字段的名字CASE_LOWER:将所有字段都小写显示CASE_UPPER:所有字段都大写显示CASE_NATURAL:原本怎么样就怎么样ATTR_ERRMODE:错误模式,当pdo出现错误的时候到底使用哪种模式进行处理ERRMODE_SILENT:静默模式,默认的出错了不管ERRMODE_WARNING:警告模式,如果出错了就会报出警告ERRMODE_EXCEPTION:异常模式,如果出错会采用异常来处理(PDOExcept
9、ion)ATTR_PERSISTENT:当前对Mysql服务器的连接是否是长连接TRUE:是长连接(长连接的使用必须要配合:Apache(connection:keepAlive),Mysqld)FALSE:默认的,非长连接什么情况下使用长连接?1. 不同的脚本的执行间距非常短,同时每个脚本都要操作数据库(Mysql:mysql_pconnect()PDO异常处理异常处理:当PHP碰到错误的时候,会直接报错,错误处理会变得相当麻烦。后来,当错误发生之后,会将错误信息不再直接输出,放到一个类的对象里(PDOException)要使用PDO异常处理1. 需要将错误处理模式变成异常模式2. 所有可能
10、出错的语句都必须放到错误捕捉语句块里try /错误捕捉语句块 /凡是有可能出现错误的语句都放在这 /一旦出错会立即进入catch语句,把所有的错误信息放到PDOexception $e里面catch(PDOExecption $e) /将错误信息进行处理 有的时候,如果数据执行没有任何错误,但是就是不符合指定的业务逻辑。一旦出现业务逻辑错误,异常是没有办法捕捉(异常只捕捉语法错误),一般认为的去通过判断语句的执行(结果),主动抛出异常,从而结束错误程序的运行。throw new PDOException;封装自己PDO见代码:MyPDO.class.php反射反射就是将其他类的结构给反应出来,从而可以对类的结构进行了解便于对类的使用。Reflection。ReflectionClass:export(要反射的类名)ReflectionClass类介绍几个方法getConstants:获取常量getProperties:获取所有属性getMethods:获取所有方法
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1