封装数据库操作类(连接认证)|学习笔记

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 快速学习封装数据库操作类(连接认证)

开发者学堂课程【PHP 进阶教程-由浅入深掌握面向对象开发-第一阶段封装数据库操作类(连接认证)】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/711/detail/12678


封装数据库操作类(连接认证)

 

内容介绍:

一、封装数据库操作类示例

 

一、封装数据库操作类示例

示例化数据库类的目的是操作数据库,数据库要操作的第一件事就是连接认证所以需要一个连接认证的功能,连接认证是一个独立的功能。这里可以使用 mysqli 面向过程的方法。但是需要建立一个方法来实现连接认证,而且需要考虑连接是否成功,所以要对外提供错误信息,而且要把失败返回给外部。增加 Public $errno()和 Public $error()记录错误信息,增加属性保存连接。

接下来是连接认证,把连接保存下来,过程中用到了主机,用户,密码,数据库,还有端口,最后判定一下结果,结果出错了,把错误信息保留,返回 false,否则返回 true;数据已经记录在对应的连接资源里了,所以不需要返回对应的连接对象。连接过程中,失败、成功都记录下来,用属性记录结果,但是对外提供的结果是false(失败)或 true(成功)。

#数据库操作类

class sql{

#设置属性:数据库初始化信息

public Shost;

public Sport;

pulic Suser;

public Spass;

public Sdbname;

public Scharset;

#构造方法初始化数据:数据较多,应该使用数组来传递数据,关联数组,而且绝大部分的开发者本意是用来测试,所以基本都是本地,因此可以给默认数据

/*

$info = array(

' host' => 'localhost',

' port' => '3306',

' user' => 'root' ,

' pass' => 'root',

' dbname' => 'blog',

' charset' => 'utf8'

)

/*

public function _construct(array $arr()){

#初始化:确保用户传入了数据,否则使用默认值

$this->host = $info[ ' host'] ?? 'localhost';

$this->port = $info['port'] ?? '3306';

$this->user=$info['user']??'root';

$this->pass=$info['pass'] ?? 'root';

$this->dbname=$info['dbname'] ?? 'test';

$this->charset = $info['charset'] ?? 'utf8';

}

}

#连接认证

Public $link;

Public $errno();

Public $error();

为了不报错,加了错误抑制符,而过程中产生的问题不会因为错误抑制符不存在,所以要对结果进行加工,如果有问题,记录错误信息,返回 false

public function connect(){

$this->link=@mysqli_connect($this->host,$this->user,$this->pass,$this->dbname,$this->port);

#加工结果

if(!$this->link){

#记录错误信息返回false

$this->errno = mysqli_connect_errno();

$this->error=iconv('gbk","utf-8',mysqli_connect_error());

return false;

}

#正确返回

return true;

}

}

#接上述代码(类外测试)

$s1 = new SqL();   #使用默认数据库信息

$db = array(

" host' =>"192.168.e.1',

"user' =>" admin ' ,

'pass' =>" admin ' ,

'dbname' => "Taobao'

);

$s2 = new SqL($db);  #使用外部数据库信息

image.png

var_dump($s2->connect() );

echo $s2->errno,$s2->error;

做得过程中都可以用局部变量来做,发现会跨方法,以后会在别的地方使用,所以用属性来做。并没有规定属性一定要放在方法前面,可以后续慢慢进行调整,慢慢养成习惯。运行结果是向一个无法连接的网络尝试了一个套接字操作,说明操作是错的。

var_dump($s2->connect() );

echo $s2->errno,$s2->error;

改为

var_dump($s1->connect() );

#echo $s2->errno,$s2->error;

重新运行,还是false,再次修改为

var_dump($s1->connect());

echo $s1->errno,$s1->error;

运行结果是 true,说明连接成功了,说明方法没有问题。

image.png

要用什么东西就做什么东西,要有什么东西就加什么东西,最终是为了实现这个结果。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
131 6
|
1月前
|
SQL 开发框架 .NET
ASP.NET连接SQL数据库:详细步骤与最佳实践指南ali01n.xinmi1009fan.com
随着Web开发技术的不断进步,ASP.NET已成为一种非常流行的Web应用程序开发框架。在ASP.NET项目中,我们经常需要与数据库进行交互,特别是SQL数据库。本文将详细介绍如何在ASP.NET项目中连接SQL数据库,并提供最佳实践指南以确保开发过程的稳定性和效率。一、准备工作在开始之前,请确保您
184 3
|
27天前
|
关系型数据库 MySQL 数据库连接
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
125 68
|
1月前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
71 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
|
23天前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
39 3
|
30天前
|
关系型数据库 MySQL 数据库连接
DBeaver如何连接一个数据库
【10月更文挑战第27天】DBeaver 是一款功能强大的通用数据库管理工具,支持多种主流数据库。本文介绍了使用 DBeaver 连接数据库的基本步骤,包括下载安装、创建新连接、选择数据库类型、配置连接参数、测试连接以及最终连接到数据库。详细的操作指南帮助用户轻松管理和操作数据库。
176 9
|
23天前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
22 1
|
23天前
|
Java 数据库连接 数据库
Java连接池在数据库性能优化中的重要作用。连接池通过预先创建和管理数据库连接,避免了频繁创建和关闭连接的开销
本文深入探讨了Java连接池在数据库性能优化中的重要作用。连接池通过预先创建和管理数据库连接,避免了频繁创建和关闭连接的开销,显著提升了系统的响应速度和吞吐量。文章介绍了连接池的工作原理,并以HikariCP为例,展示了如何在Java应用中使用连接池。通过合理配置和优化,连接池技术能够有效提升应用性能。
38 1
|
1月前
|
安全 Java 关系型数据库
springboot整合springsecurity,从数据库中认证
本文介绍了如何在SpringBoot应用中整合Spring Security,并从数据库中进行用户认证的完整步骤,包括依赖配置、数据库表创建、用户实体和仓库接口、用户详情服务类、安全配置类、控制器类以及数据库初始化器的实现。
111 3
springboot整合springsecurity,从数据库中认证
|
1月前
|
SQL JavaScript 关系型数据库
node博客小项目:接口开发、连接mysql数据库
【10月更文挑战第14天】node博客小项目:接口开发、连接mysql数据库
下一篇
无影云桌面