PDO增删改查预处理_第1页
PDO增删改查预处理_第2页
PDO增删改查预处理_第3页
PDO增删改查预处理_第4页
PDO增删改查预处理_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、回顾接口:interface,接口内部只能有常量和公有的抽象方法。只能被实现implements。PHP重载:当访问一个不存在的或者没有权限访问的属性或者方法的时候,会自动触发魔术方法。属性重载方法重载对象保存:将对象结构及其属性内容保存到外部文件。序列化:serialize,将一个复杂的数据类型变成一个带有结构的字符串反序列化:unserialize,将一个字符串转化成对应的复杂数据类型(如果要实现对一个对象字符串进行反序列化,必须保证该对象的类已经存在:自动加载)对象遍历:foreach,遍历对象的公有属性(将公有属性的值和属性名赋值给对应$value和$key)接口iterator:类实

2、现Iterator接口current:获取当前数组元素的值$this->hobby$this->positionkey:获取当前下标next:数组指针下移rewind:重置指针valid:判断当前指针是否有效,使用key函数判断数组下标快速排序:1.找到一个基准元素;2比较数组中其他所有元素;3.将与基准元素比较后的结果根据大小放到两个不同的数组中;4.数组递归调用函数自己;5.返回一个已经排好序的数组(array_merge())递归点:数组递归出口:数组元素只有一个(或者为空)的时候需求:一个项目,下面有两个团队:要求可以随意的切换数据库(mysql,Oracle),一个团队负

3、责做mysql,一个团队负责做Oracle。(公共接口已经做好)但是以上解决方案需要用户每次去手动修改代码来继承不同的类。PDOPDO:PHP Data Object,PHP数据对象(数据抽象层)作用:能够解决用户在需要使用不同的数据库的时候进行来回的切换,PDO能够自动的进行数据库的切换,而且还能将所有的有可能存在的不兼容的语法进行兼容性处理。加载PDO使用PDO之前必须要开启PDO扩展1. 在php.ini文件中找到PDO扩展开启Mysqlpdo扩展注:如果PHP版本比较低的情况下,需要额外的去开启pdo扩展,再开启pdo对应的数据库扩展2. 重启服务器使用PDOPDO这一套不单只是一个类

4、,有三个类PDO类:负责数据库的连接,分发还SQL语句的发送PDOStatement类:结果集类,专门用来出来查询的结果,还有其他功能(预处理)PDOException类:用异常机制处理PDO类所碰到的问题操作数据库步骤1. 连接认证PDO:_construct($dsn,$user,$pass)$dsn:由两个部分构成:数据源,数据库信息$dsn:mysql:host=localhost;port=3306;dbname=project$pdo = new PDO(mysql:host=localhost;port=3306;dbname=project,root,root);2. 组织SQ

5、L语句3. 发送SQL语句给服务器,接收执行结果PDOStatement PDO:query:执行有结果集返回的查询语句4. 从结果集获取数据PDOStatement:fetch:从结果集中获取一行记录5. 关闭连接PDO没有提供关闭连接的方法unset(PDO对象);$pdo = null;PDO增删改查1. 新增数据2. 修改数据3. 删除数据4. 查询数据查询处理在查询得到的结果集处理时,默认的使用fetch得到的是一个混合数组,可以通过方法指定参数来修改获取数据的方式。fetch方法指定参数关联数组索引数组fetchAll自定义获取所有结果集内容作业:使用while循环实现所有的结果集

6、内容的遍历。fetchColumn意义1. 减少代码冗余2. 提高代码执行效率fetchObjectstdClass:标准类,空类$str = abcd;$o = (object)$str;/得到的对象就是stdClass对象指定自己类bindColumn与fetch作用:为了操作方便,为了弥补fetchColumn只能获取一个字段值的缺陷。预处理在真正执行某条SQL语句之前,先将SQL语句准备好,在执行过程中再绑定数据语法:准备预处理prepare 预处理名字 from 要执行的SQL语句执行预处理execute 预处理名字 using 变量预处理高级使用:可以在预处理过程中使用一些列不确定

7、的内容。PDO预处理可以使用多种方式实现预处理:指的是在绑定数据进行执行的时候,可以有多种方式。使用数组指定预处理变量1. 准备预处理语句(发送给服务器,让服务器准备预处理语句)PDOStatement PDO:prepare:类似exec将一条SQL语句发送给Mysql服务器2. 执行预处理:将要操作的数据发送给预处理语句,再执行预处理语句PDOStatement:execute($array):数组用来传递对应的参数通过绑定变量bindParam:在执行预处理之前,将之前预处理语句所指定的变量进行赋值bindParam只能通过变量的形式进行赋值(引用传值)bindValue:与bindPa

8、ram一样bindValue可以直接赋值(值传递)bindParam与bindValue的区别1. bindParam必须要先声明变量,再使用变量;bindValue可以直接使用值2. bindValue是一次性的,而bindParam可以无限使用(因为使用的引用传值,一旦变量的值进行改变,那么对应的组织SQL语句时所用到的变量的值也跟着改变)预处理语句使用原始?代替变量PDO事务处理事务处理流程1. 开启事务PDO:beginTransaction2. 事务操作所有的实务操作就是增删改3. 事务提交PDO:commit:成功后提交数据PDO:rollback:失败后回滚数据注意1. 要实现事

9、务处理必须数据表的存储引擎为InnoDB2. 事务必须完整(开启à提交)作业:不适用PDO的事务处理,实现模拟事务。PDO属性设置设置PDO在处理数据的过程中采用什么方式去处理PDO:setAttribute:设置属性PDO:getAttribute:获取属性常用属性PDO:ATTR_AUTOCOMMIT:设置当前连接Mysql服务器的客户端的SQL语句是否自动执行,默认是自动提交PDO:ATTR_CASE:当pdo从结果集中获取数据的时候,如何处理对应的字段的名字PDO:CASE_LOWER:将所有字段都小写显示PDO:CASE_UPPER:所有字段都大写显示PDO:CASE_NA

10、TURAL:原本怎么样就怎么样PDO:ATTR_ERRMODE:错误模式,当pdo出现错误的时候到底使用哪种模式进行处理PDO:ERRMODE_SILENT:静默模式,默认的出错了不管PDO:ERRMODE_WARNING:警告模式,如果出错了就会报出警告PDO:ERRMODE_EXCEPTION:异常模式,如果出错会采用异常来处理(PDOException)PDO:ATTR_PERSISTENT:当前对Mysql服务器的连接是否是长连接TRUE:是长连接(长连接的使用必须要配合:Apache(connection:keepAlive),Mysqld)FALSE:默认的,非长连接什么情况下使用

11、长连接?1. 不同的脚本的执行间距非常短,同时每个脚本都要操作数据库(Mysql:mysql_pconnect())PDO异常处理异常处理:当PHP碰到错误的时候,会直接报错,错误处理会变得相当麻烦。后来,当错误发生之后,会将错误信息不再直接输出,放到一个类的对象里(PDOException)要使用PDO异常处理1. 需要将错误处理模式变成异常模式2. 所有可能出错的语句都必须放到错误捕捉语句块里try/错误捕捉语句块/凡是有可能出现错误的语句都放在这/一旦出错会立即进入catch语句,把所有的错误信息放到PDOexception $e里面catch(PDOExecption $e)/将错误信息进行处理 有的时候,如果数据执行没有任何错误,但是就是不符合指定的业务逻辑。一旦出现业务逻辑错误,异常是没有办法捕捉(异常只捕捉语法错误),一般认为的去通过判断语句的执行(结果),主动抛出异常,从而结束错误程序的运行。语法:throw new PDOException;封装自

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论