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

简介: 快速学习封装数据库操作类(连接认证)

开发者学堂课程【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

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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
3月前
|
SQL Java 关系型数据库
Java连接MySQL数据库环境设置指南
请注意,在实际部署时应该避免将敏感信息(如用户名和密码)硬编码在源码文件里面;应该使用配置文件或者环境变量等更为安全可靠地方式管理这些信息。此外,在处理大量数据时考虑使用PreparedStatement而不是Statement可以提高性能并防止SQL注入攻击;同时也要注意正确处理异常情况,并且确保所有打开过得资源都被正确关闭释放掉以防止内存泄漏等问题发生。
156 13
|
3月前
|
SQL 关系型数据库 MySQL
MySQL数据库连接过多(Too many connections)错误处理策略
综上所述,“Too many connections”错误处理策略涉及从具体参数配置到代码层面再到系统与架构设计全方位考量与改进。每项措施都需根据具体环境进行定制化调整,并且在执行任何变更前建议先行测试评估可能带来影响。
1121 11
|
9月前
|
关系型数据库 MySQL Java
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
|
9月前
|
数据库连接 应用服务中间件 PHP
|
8月前
|
安全 Linux 网络安全
YashanDB数据库服务端SSL连接配置
YashanDB支持通过SSL连接确保数据传输安全,需在服务端生成根证书、服务器证书及DH文件,并将根证书提供给客户端以完成身份验证。服务端配置包括使用OpenSSL工具生成证书、设置SSL参数并重启数据库;客户端则需下载根证书并正确配置环境变量与`yasc_env.ini`文件。注意:启用SSL后,所有客户端必须持有根证书才能连接,且SSL与密码认证独立运行。
|
6月前
|
安全 关系型数据库 数据库
瀚高股份与 Anolis OS 完成适配,龙蜥获数据库场景高性能与稳定性认证
Anolis OS 能够为用户提供更加高效、安全的数据处理与管理体验。
|
5月前
|
SQL XML Java
配置Spring框架以连接SQL Server数据库
最后,需要集成Spring配置到应用中,这通常在 `main`方法或者Spring Boot的应用配置类中通过加载XML配置或使用注解来实现。
483 0
|
8月前
|
Oracle 安全 关系型数据库
【Oracle】使用Navicat Premium连接Oracle数据库两种方法
以上就是两种使用Navicat Premium连接Oracle数据库的方法介绍,希望对你有所帮助!
1655 28

热门文章

最新文章