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

相关推荐

  • PHP8中的函数:array_is_list()的新玩法。

    PHP8是最新的PHP版本,打破了创新的记录。PHP8新增加了很多新特性和函数,其中之一就是函数array_is_list()的新玩法。在这篇文章中,我将讨论这个函数的新使用方法,解释它能为开发人员带来的好处。 首先,让我们来…

    2023年5月21日
    07
  • 说说香港php云主机购买怎么搭建网络。

    搭建香港PHP云主机,首先需要购买一台服务器。可以选择租用多台服务器组件集群,但这需要更高的技术含量和更复杂的操作。选择可信赖的云主机服务提供商是关键,如野草云或亿美互联等。注册账号并登录,然后根据所选…

    2024年7月22日
    00
  • PHP商城开发中的产品图片优化技巧

    随着电子商务的快速发展,越来越多的商家选择使用PHP开发电子商城,以实现线上线下销售的高效连接。而在开发电子商城时,一个重要的问题就是产品图片的优化。本文将介绍一些PHP商城开发中的产品图片优化技巧。图片…

    2023年5月18日
    02
  • 说说php怎么关闭。

    一、如何关闭PHP服务 要关闭PHP服务,首先需要了解您使用的是哪种Web服务器,以下是针对不同Web服务器关闭PHP服务的教程: 1. 1对于Apache Web服务器 在Linux系统中,可以使用以下命令关闭Apache Web服务器上的PHP…

    2024年6月15日
    04
  • 如何使用PHP进行智能问答和知识图谱。

    随着人工智能技术的发展,智能问答系统和知识图谱已经成为了人们使用互联网获取信息的重要方式之一。PHP是一种非常流行的编程语言,非常适合用于开发智能问答系统和知识图谱。本文将介绍如何使用PHP进行智能问答和…

    2023年5月28日
    05
  • PHP8.0中的国际化库

    PHP8.0中的国际化库:Unicode CLDR和Intl扩展随着全球化的进程,开发跨语言、跨地域的应用程序变得越来越普遍。国际化是实现这一目标的重要组成部分。在 PHP 8.0 中,引入了Unicode CLDR和Intl扩展,这两个组件都为…

    2023年5月19日
    010
  • 我来说说如何租网站的服务器。

    租赁网站服务器的过程包括:选择可信赖的网站服务器租赁商;提交申请;接着,根据审核结果签订租赁合同并支付押金和租金;开通网站服务器租赁服务;使用网站服务器租赁服务。在选择服务商时,可以考虑腾讯云、阿里…

    2024年7月11日
    00
  • 详解PHP中的OPcache 扩展

    OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。PHP 5.5 之后的版本都是默认绑定该扩展的,之前的 PHP 5.2,5.3 和…

    2022年6月12日
    0189

联系我们

QQ:951076433

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