封装数据库操作类( SQL 执行检查)|学习笔记

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 快速学习封装数据库操作类( SQL 执行检查)

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

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


封装数据库操作类(SQL 执行检查)

 

内容介绍:

一、对 SQL 执行检查的简介

二、代码详解

三、测试

 

一、对 SQL 执行检查的简介

本课将继续完成封装,初始化的操作已经结束,下一步是针对如何去解决用户使用操作类的业务问题:

发现了基于 mysqli 的操作,所有的数据库的指令执行都是利用 mysqli _query 执行,而执行的过程中都会涉及到 SQL 可能出错的问题,因此把关于 SQL 执行部分(无论增删改查理论上任何操作都要进行数据库的操作),将它单独取出进行错误的检查以及执行(利用 mysqli _query)。

 

二、代码详解

#  SQL 执行以及错误检查

public function check($sql){

//可以是$sql,也可以将 sql 作为属性存起来(无意义),因为 sql 也是其他方法传入的或者是调用传入的

$res = mysqli_ query($this->link, $sql);

//利用 mysqli _query 执行SQL,执行结束后,$sql 是外部传入;$this->link,连接对象;执行完成之后会有结果,该结果可能是布尔[ ture (正确)或者 false(错误),如果出错即为 false],也可能是执行结果查询的结果及对象

#判定错误

if(!$res){

$this->errno = mysqli_ errno($this->1ink); //说明有错

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

return false;

// sql 从外部传入后,判定对应结果;mysqli_ errno():发现代码中检查的次数很多,给定某个参数进行判定返回false,所以可进行封装,让代码更加简化;返回信息错误,错误信息存入 sql 中,允许用户自行获取

}

return $res;

//假如有错则报错,无错返回正确结果;成功返回结果,可能是布尔 ture  (正确)或者是执行结果查询的结果及对象

}

}

 

三、测试

SQL 执行以及错误检查结束,错误的检查主要是做 SQL 执行检查,至于谁调用 check() 方法,对此并无要求。

1.代码:

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

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

$db =array(

'host' => ' 192.168.0.1',

‘user ' => 'admin”,

‘pass’=>’admin ' ,

‘dbname' => ' T aobao '

);

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

$s1- >connect();

$s1->charset();

$s1->check('select * from test');

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

2.详解

添加代码$s1->check('select * from test'),无 test 表,观察是否报错

$s1->check:$s1下的方法 check

发现 bool(true)是连接的过程不需要了解,删除 var_ dump( $s1- >connect());中的 var_ dump(),原因是应该保证连接方法执行才可有结果

image.png

修改之后刷新,发现 1146Table‘db_2.test’ 不存在

image.png

将 $s1->check('select * from test');代码改为 $s1->check('select * from t_1') ;更新结果

发现 1146Table‘db_2 .t_1’ 表不存在

image.png

假如表存在应该是正常的,可实现

将代码 $s1->check('select * from t_1') 改为 $s1->check('select * from t_40');更新结果

结果出现表,说明得到了正确的结果

image.png

因为得到正确的结果时,页面中没有信息,所以不会出现错误信息。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
69 11
|
1月前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
1月前
|
SQL 监控 安全
SQL Servers审核提高数据库安全性
SQL Server审核是一种追踪和审查SQL Server上所有活动的机制,旨在检测潜在威胁和漏洞,监控服务器设置的更改。审核日志记录安全问题和数据泄露的详细信息,帮助管理员追踪数据库中的特定活动,确保数据安全和合规性。SQL Server审核分为服务器级和数据库级,涵盖登录、配置变更和数据操作等事件。审核工具如EventLog Analyzer提供实时监控和即时告警,帮助快速响应安全事件。
|
2月前
|
SQL 关系型数据库 MySQL
体验使用DAS实现数据库SQL优化,完成任务可得羊羔绒加厚坐垫!
本实验介绍如何通过数据库自治服务DAS对RDS MySQL高可用实例进行SQL优化,包含购买RDS实例并创建数据库、数据导入、生成并优化慢SQL、执行优化后的SQL语句等实验步骤。完成任务,即可领取羊羔绒加厚坐垫,限量500个,先到先得。
214 13
|
2月前
|
SQL 存储 BI
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
|
2月前
|
SQL 数据库
gbase 8a 数据库 SQL优化案例-关联顺序优化
gbase 8a 数据库 SQL优化案例-关联顺序优化
|
2月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第16天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括配置系统源、安装 SQL Server 2019 软件包以及数据库初始化,确保 SQL Server 正常运行。
114 4
|
2月前
|
SQL Java 数据库连接
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
|
SQL 索引
【MS SQL】通过执行计划来分析SQL性能
原文:【MS SQL】通过执行计划来分析SQL性能 如何知道一句SQL语句的执行效率呢,只知道下面3种: 1、通过SQL语句执行时磁盘的活动量(IO)信息来分析:SET STATISTICS IO ON (开启) / SET STATISTICS IO OFF (关闭) 2、通过SQL语句执行时...
945 0
|
4月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")