重蔚自留地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

相关推荐

  • 经验分享纯真ip数据库。

    纯真IP数据库是一个专门收集和整理各种纯真、可爱、有趣的IP资源的网站,这个数据库包括了动漫、游戏、小说等多种领域,旨在为广大用户提供一个便捷的获取纯真IP资源的平台,在这里,你可以找到各种你喜欢的纯真IP,…

    2024年6月20日
    01
  • 小编分享为啥香港服务器适合做数据库服务器呢。

    香港服务器适合做数据库服务器的原因可以从多个角度进行分析,包括地理位置、网络环境、法律政策以及技术基础设施等。 地理位置优势 香港地处亚洲的中心位置,具有非常低的延迟连接到周边的亚洲国家及地区,对于面…

    2024年7月20日
    02
  • php运行原理和环境的搭建。

    php语言运行原理 客户端技术:                                                服务器端技术: html                                    web服务器软件:            服务器端语言:        数据库: css       …

    2020年11月13日 PHP自学教程
    0354
  • PHP8中的新函数str_starts_with():字符串开头判断方法。

    随着PHP8的发布,我们迎来了一些新的函数和特性。其中一个非常有用的新函数是str_starts_with()。它用于判断一个字符串是否以另一个指定的字符串开头。在这篇文章中,我们将讨论这个新函数以及它在PHP中的使用方法…

    2023年5月21日
    05
  • 经验分享动态网站建设全程揭秘。

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

    2024年7月2日
    02
  • 聊聊如何分析DB2数据库中pagesize和其对应寻址能力限制「db2 pagesize」。

    DB2数据库是一个强大的关系型数据库管理系统,它提供了许多高级特性和优化选项,pagesize是一个重要的参数,它决定了数据库在磁盘上的存储方式和性能,pagesize的大小直接影响了数据库的寻址能力,因为寻址能力是指…

    2024年6月16日
    01
  • PHP产生不重复随机数的5个方法总结

    无论是Web应用,还是WAP或者移动应用,随机数都有其用武之地。PHP项目中,PHP程序员是需要经常的和随机数或者随机数组打交道,所以,本文就分享PHP如何产生不重复随机数常用的几种方法! 方法一: 方法二: 方法三 …

    2018年5月2日
    0284
  • PHP图像处理技术的图像处理基本介绍

    所谓的PHP图像处理技术,就是通过php的函数进行绘制图像,然后可以输出到浏览器,也可以保存到本地              该绘图技术,需要开启php的一个扩展:GD2,该扩展提供了很多绘制图像的方法        PHP的图像处理技…

    2018年9月1日
    0255

联系我们

QQ:951076433

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