封装数据库操作类(设置字符集)|学习笔记

简介: 快速学习封装数据库操作类(设置字符集)

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

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


封装数据库操作类(设置字符集)

 

内容介绍:

一、 设置字符集

二、 总代码及解释

 

一、设置字符集

连接认证包括数据库选择设定好后,此时还存在一个细节问题:字符集,为了保证数据库连接的正常操作.要新增一个方法设定字符集。

连接认证做好之后数据库也就选择好了,但是还存在一个细节问题,做数据库任何操作之前,先要完成的是字符集的设置,这样才能保证正常运行,不出错误。独立的功能应该有独立的方法,所以新增一个方法来做这件事。

在 Sql 类中增加设定字符集的方法的代码如下:

#在 Sql 类中增加设定字符集的方法

public function charset(){

#调用 mysqli 的设置字符集的函数

$res = @mysqli_set_charset($this->link,$this->charset);

#判定是否成功

if( !$res){

$this->errno = mysqli_errno($this->link);

$this->error = mysqli_error($this->link);

return false;

}

#正确操作

return true;

}

 

二、总代码及解释

<?Php

#数据库操作类

class Sql{

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

public $host;

public $port;

pulic $user;

public $pass;

public $dbname;

public $charset;

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

/*

$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();

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;

}

#字符集设置

public function charset(){

#利用 mysqli 实现字符集设置

$res = @mysqli_set_charset($this->link,$this->charset);

#判定结果 if( !$res){

$this->errno = mysqli_errno($this->link);

$this->error = mysqli_error($this->link);

return false;

}

#正确操作

return true;

}

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

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

$db = array(

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

'user' =>" admin ' ,

'pass' =>" admin ' ,

'dbname' => "Taobao'

);

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

var_dump($s2->connect() );

$s1->charset();

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

用到的函数是 mysqli_set_charset,设定的字符集就是当前的字符集,执行结束后,结果不一定成功,有可能字符集是错误的,有可能字符集数据库是不支持的,所以要判定一下结果,如果结果错误,把错误取出来,结果成功就返回。

不需要定义属性,因为错误信息已经存在了,第一步,利用 mysqli 实现字符集设置,抑制错误信息,结果不需要给外部使用,使用局部变量,不需要用属性保留,然后判定结果,信息错误要有错误信息记录;正确操作返回 true,测试一下,如果输出错误信息,后面一直保留,输出结果 true,字符集的设置也就完成了。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
3月前
|
SQL Java 关系型数据库
Java连接MySQL数据库环境设置指南
请注意,在实际部署时应该避免将敏感信息(如用户名和密码)硬编码在源码文件里面;应该使用配置文件或者环境变量等更为安全可靠地方式管理这些信息。此外,在处理大量数据时考虑使用PreparedStatement而不是Statement可以提高性能并防止SQL注入攻击;同时也要注意正确处理异常情况,并且确保所有打开过得资源都被正确关闭释放掉以防止内存泄漏等问题发生。
156 13
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
359 6
|
9月前
|
数据库 Python
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
|
9月前
|
存储 SQL Shell
【YashanDB知识库】客户端字符集与数据库字符集兼容问题
【YashanDB知识库】客户端字符集与数据库字符集兼容问题
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
243 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
|
SQL 关系型数据库 MySQL
php学习笔记-连接操作mysq数据库(基础)-day08
本文介绍了PHP中连接操作MySQL数据库的常用函数,包括连接服务器、设置字符集、关闭连接、选择数据库、结果集释放、获取影响行数以及遍历结果集等操作。通过书籍查询的实例演示了如何使用这些函数进行数据库操作,并提供了一个PHP操纵MySQL数据库的模板。
php学习笔记-连接操作mysq数据库(基础)-day08
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
736 3
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
1050 2
|
应用服务中间件 数据库
Tomcat 的数据库连接池设置与应用
Tomcat 的数据库连接池设置与应用
174 3
|
存储 分布式计算 数据库
阿里云国际版设置数据库云分析工作负载的 ClickHouse 版
阿里云国际版设置数据库云分析工作负载的 ClickHouse 版

热门文章

最新文章