重蔚自留地PHP学习第46天——通过PDO连接数据库

上篇文章学习了数组的遍历https://www.cwhello.com/10789.html

下面做些总结。

复合数据的保存:数组和对象

保存文件:对符复合数据进行序列化保存

读取文件:反序列化得到数据类型

对象反序列化必须要先加载对应的类

对象序列化的时候资源是不能序列化的:__sleep在序列化之前先调用,__wakeup在反序列化之后调用

遍历对象:普通遍历对象,遍历对象的公有属性

对象对应的类必须实现iterator接口:current,key,next,rewind,valid,五个方法没有顺序关系

foreach的顺序:①rewind,②valid,③key,④current,⑤next,后面就是重复②③④⑤,直到退出,退出前的最后一个方法②

排序算法

选择排序:每一次内存循环得到最小值的小标,内层循环之外进行一次交换

快速排序:递归调用,每次取出需要排序数组的一个元素,将较小的放到左边数组,较大的放到右边数组,最后返回左中右的合并

PDO

PDO:PHP数据对象

PDO能够灵活的去切换数据库,而不需要修改很多源代码。

PDO操作数据库原理

重蔚自留地PHP学习第46天——通过PDO连接数据库

如何使用PDO?

PDO不是PHP自有的东西,需要通过加载扩展来实现

  1. php.ini中,加载pdo-mysql的扩展

重蔚自留地PHP学习第46天——通过PDO连接数据库

如果是低版本的PHP还需要加载一个额外的PDO扩展

  1. 重启Apache
  2. 验证PDO-MYSQL扩展是否加载成功

phpinfo()

重蔚自留地PHP学习第46天——通过PDO连接数据库

成功

重蔚自留地PHP学习第46天——通过PDO连接数据库

PDO是如何工作的?

  1. 连接认证

new PDO($dsn,$user,$password)

$dsn:数据库类型mysql:host=host;Port=port;dbname=dbname

$user:用户名

$password:用户密码

重蔚自留地PHP学习第46天——通过PDO连接数据库

  1. 发送SQL语句,得到SQL执行结果

重蔚自留地PHP学习第46天——通过PDO连接数据库

  1. 解析执行结果

重蔚自留地PHP学习第46天——通过PDO连接数据库

  1. 关闭连接

pdo没有提供关闭连接的方法,所以关闭连接的方式是释放pdo对象

重蔚自留地PHP学习第46天——通过PDO连接数据库

PDO三大类

PDO类:专门用来连接数据库和发送SQL语句操作,事务处理

PDOStatement类:用来处理结果集,用来获取用户查询的数据,预处理

PDOException类:PDO异常处理类,捕获异常

重蔚自留地PHP学习第46天——通过PDO连接数据库

PDO类

重蔚自留地PHP学习第46天——通过PDO连接数据库

exec:执行SQL语句,使用exec执行的sql语句是没有返回值(结果集)

query:执行SQL语句,有返回结果集的语句

PDO增删改查

新增

重蔚自留地PHP学习第46天——通过PDO连接数据库

更新

重蔚自留地PHP学习第46天——通过PDO连接数据库

删除

重蔚自留地PHP学习第46天——通过PDO连接数据库

查询

重蔚自留地PHP学习第46天——通过PDO连接数据库

课堂作业:

  1. 写一个函数,函数参数是传入一个类名,函数要接收类名,到指定的地方去加载对应的类文件(DB.class.php),该函数返回一个对象

function getObject($className){

if(is_file("./$className.class.php")){

//加载

require_once "./$className.class.php";

return new $className;

}

return false;

}

//调用函数

define('DB','DB');

$db = DB;

$db = getObject($db);//undefined constant DB

$db->getRow();

  1. 使用PDO做一套增删改查

处理结果集

利用PDO::query方法得到一个结果集的对象

PDOStatement类

重蔚自留地PHP学习第46天——通过PDO连接数据库

从结果集中获得纪录

使用PDOStatement对象来去访问方法,从而得到所需要的数据

获取结果集的行数和列数

重蔚自留地PHP学习第46天——通过PDO连接数据库

fetch:获得结果集中一行记录,将指针下移

重蔚自留地PHP学习第46天——通过PDO连接数据库

修改fetch参数,获得索引或者关联数组

得到关联数组

重蔚自留地PHP学习第46天——通过PDO连接数据库

得到索引数组

重蔚自留地PHP学习第46天——通过PDO连接数据库

fetchAll:获得结果集中所有记录

重蔚自留地PHP学习第46天——通过PDO连接数据库

fetchColumn:返回某一行中指定列的字段值,指定列只能使用索引不能使用关联(字段名字)

重蔚自留地PHP学习第46天——通过PDO连接数据库

fetchObject:获取一行记录,把记录的字段当做对象的属性,保存成类的一个对象。

重蔚自留地PHP学习第46天——通过PDO连接数据库

指定类对象

重蔚自留地PHP学习第46天——通过PDO连接数据库

可以设置fetch的模式

bool PDOStatement::setFetchMode ( int $mode ):可以设定fetch按照什么模式去获取数据

重蔚自留地PHP学习第46天——通过PDO连接数据库

预处理

提前处理,先将SQL语句发送给服务器,但是不执行,返回一个标记,在之后需要执行的时候,直接使用标记,并且还能传输数据。

预处理语法:prepare 预处理名字 from '需要执行的SQL语句';

重蔚自留地PHP学习第46天——通过PDO连接数据库

执行预处理语法:execute 预处理名字

重蔚自留地PHP学习第46天——通过PDO连接数据库

预处理的作用

  1. 减少代码量
  2. 减少网络带宽的使用

重蔚自留地PHP学习第46天——通过PDO连接数据库

PDO实现预处理

需求:向pro_student表里插入20条数据

重蔚自留地PHP学习第46天——通过PDO连接数据库

预处理还允许在执行前进行变量绑定,进行索引绑定

预处理语句:prepare selectStudent from 'select * from pro_student where id=?';

执行前使用PDOStatement对象的bindPram和bindValue来对问号进行赋值

执行预处理:execute()

bindParam的使用

重蔚自留地PHP学习第46天——通过PDO连接数据库

bindValue的使用

重蔚自留地PHP学习第46天——通过PDO连接数据库

bindParam和bindValue的区别

  1. bindParam和bindValue都能够为预处理绑定数据
  2. bindParam能够在每一次执行execute之前去找对应的变量名进行重新绑定,而bindValue不会重新绑定,一般不会使用bindValue

PDO事务处理

开启事务:bool PDO::beginTransaction ( void )

提交事务:bool PDO::commit ( void )

回滚事务:bool PDO::rollBack ( void )

重蔚自留地PHP学习第46天——通过PDO连接数据库

bindColumn:从一条记录中找到指定的字段的值,把该值绑定到对应的变量上

重蔚自留地PHP学习第46天——通过PDO连接数据库

意义:有时候不大方便使用数组的情况下,可以将一个获取到的记录里的字段值分别分配到绑定的变量上

PDO属性设置和访问

PDO::ATTR_AUTOCOMMIT(1,0):1代表开启自动提交,0代表执行任何SQL语句都需要手动提交

PDO::ATTR_CASE:字段名称的大小写

PDO::CASE_LOWER:字段全部小写

PDO::CASE_UPPER:字段全部大写

PDO::CASE_NATURAL:原来字段的大小

PDO::ATTR_ERRMODE:PDO处理错误的模式

PDO::ERRMODE_SILENT:静默模式,出错了不处理

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

PDO::ERRMODE_EXCEPTION:异常模式,出错了交给异常类处理

PDO::ATTR_PERSISTENT:连接持久化

TRUE:持久连接,在脚本执行结束后,再执行另外的脚本的时候,数据库的连接不会断。如果要实现持久连接,需要mysql服务器的支持,还要Apache支持长连接

FALSE:关闭连接,只要当前脚本执行结束,那么就断开连接

PDO异常处理

异常一般是通过一个类的对象(异常类)将错误信息进行捕捉,捕捉到到之后,存放到异常对象里。

异常常用的语法就三个:

try{

//在try的语句里去捕捉异常

//所有有可能出现错误的代码都写在这里

}catch(){

//一旦在try语句块里捕捉到里异常就会执行catch里的语句块

}

throw:抛出异常,在某些情况下,系统抓不到错误,但是逻辑可以判断出错,可以手动的叫异常抛出,从而去执行catch里的语句块

重蔚自留地PHP学习第46天——通过PDO连接数据库

主动抛出异常:throw

重蔚自留地PHP学习第46天——通过PDO连接数据库

注意:如果想使用PDOException,必须要将PDO的错误处理模式设置成异常模式才行。

PHP本身也支持异常,有一个异常类Exception

反射

Reflection,将一个类里面的结构给显示出来。

反射类:ReflectionClass,将其他类的结构跟反射出来,同时还能获得对应的类里面的所有的属性,方法

作用

  1. 在不知道类的情况的时候,可以通过反射来获得类里面的所有属性和方法
  2. 通过反射来对类进行修改

export:静态方法,将一个类结构全部反映出来

重蔚自留地PHP学习第46天——通过PDO连接数据库

反射类内部(new ReflectionClass(类)

重蔚自留地PHP学习第46天——通过PDO连接数据库

getConstants:获取所有的常量,返回一个数组

重蔚自留地PHP学习第46天——通过PDO连接数据库

getProperties:获取所有属性,返回一个数组

getMethods:获取所有方法,返回一个数组

重蔚自留地PHP学习第46天——通过PDO连接数据库

封装PDO类

class MyPDO{

}

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/263880.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
重蔚重蔚管理团队
上一篇 2023年5月21日 08:30
下一篇 2023年5月22日 05:24

相关推荐

  • PHP开发中的API接口创建详解。

    随着互联网的快速发展,API接口在现代Web应用中扮演着越来越重要的角色。作为PHP开发者,了解如何创建API接口是非常必要的技能。本文将详细介绍PHP开发中API接口创建的基本内容。什么是API接口?API是Application P…

    2023年6月3日
    03
  • 经验分享动态网站建设全程揭秘。

    动态网站建设是一种基于数据库的web开发技术,它允许网站内容根据用户的操作和输入实时更新和变化,这种类型的网站通常具有交互性,能够提供更丰富、更个性化的体验,我们将详细介绍动态网站建设包括哪些部分,以及…

    2024年7月2日
    01
  • 如何处理PHP中的XML和JSON数据。

    在Web开发中,我们经常需要处理不同格式的数据,包括XML和JSON格式的数据。在PHP中,处理这些数据是一个常见的任务,因为PHP是一种非常流行的服务器端脚本语言,而XML和JSON都是常用的数据交换格式。在本文中,我们…

    2023年5月30日
    01
  • 如何利用PHP实现商城的礼品卡系统。

    随着互联网的不断发展,越来越多的消费者开始通过电子商城进行购物,而在电子商城中,礼品卡成为了一种非常受欢迎的赠送方式。那么,如何利用PHP实现商城的礼品卡系统呢?本文将为大家介绍相关实现方法。一、礼品卡…

    2023年5月30日
    01
  • 实例讲解php提交表单关闭layer弹窗iframe

    介绍一款非常好用的前端弹窗插件:layer 官网地址:http://layer.layui.com/根据官方的API:layer的iframe弹窗//iframe层-父子操作 layer.open({ type: 2, area: ['700px', '530px'], fix: fal…

    2022年6月17日
    0160
  • PHP调用网易短信接口实现批量短信发送。

    随着移动互联网的快速发展,短信营销成为越来越多企业所青睐的一种营销手段。而要想进行短信营销,首先需要解决的就是如何实现批量短信发送。本文将介绍如何使用PHP调用网易短信接口实现批量短信发送。申请网易短信…

    2023年5月23日
    03
  • PHP入门指南:PHP和Prometheus。

    PHP作为一种开源的脚本语言,已经有20多年的历史。它主要被用于Web开发,特别是用于服务端的脚本。PHP的使用非常广泛,它被用于构建许多大型的Web应用程序和网站。Prometheus则是一种开源的监控系统和时间序列数据…

    2023年5月22日
    02
  • 浅谈PHP中的工厂方法模式

    本篇文章带大家了解一下PHP设计模式中的工厂方法模式。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。上回说到,简单工厂不属于GoF的二十三种设计模式,这回可就来真家伙了,大名顶顶的工厂方…

    2023年3月29日
    01

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息