我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql管理系统操作日志设计举例分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql管理系统操作日志设计举例分析

本篇内容介绍了“mysql管理系统操作日志设计举例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

在开始做之前,必须把两个日志分清楚,那就是普通操作日志和业务操作日志,这两者有何区别?

在我理解,普通操作日志就是单表的操作记录,而业务操作日志则就是一系列的普通操作日志的集合。

打个比方,用户需要购买一样宝贝,已经到了下单那步,下单就是个业务,这个业务背后就是一系列的业务,如:生成订单 → 生成商品快照 → 发送一条站内信 → 删除购物车里对应宝贝。

这样一个下单操作就包含了4部分,可以把这4部分看成是4张表,分别对这4张表进行对应的操作,就实现了业务。

但今天我要讲的不是业务操作日志,因为不同项目的业务不尽相同,所以它无法做成通用模块,而我要讲的,就是普通操作日志。

上面解释了一大段,下面干货就要亮相了,先洗把脸清醒下。

首先,哪些地方需要记录操作日志?执行insert、update、delete这3个操作的时候,就需要进行日志,而日志执行的先后顺序如下

mysql管理系统操作日志设计举例分析

顺序清楚后,就来看下我写的一份日志操作类吧,***版随便谢谢的,重复代码有点多,还未来得及优化。

class LOG{      protected $primaryid;      protected $tbid;      protected $tbname;      protected $keys;      protected $values;           public function insert($tbid, $tbname){          global $db;          //查询表注释          $db->query('show table status where name = "'.$tbname.'"');          $tb = $db->fetch();          //插入日志主表          $returnid = $db->insert(0, 2, 'tb_log', array(              'adminid = '.$_SESSION['admin']['id'],              'type = 1',              'tableid = '.$tbid,              'tablename = "'.$tbname.'"',              'comment = "'.$tb['Comment'].'"',              'dt = now()'         ));          //查询字段注释          $db->query('show full columns from '.$tbname);          $tb = $db->fetchAll();          foreach($tb as $v){              $commentArray[$v['Field']] = $v['Comment'];          }          //查询所有字段信息,插入日志从表          $rs = $db->select(0, 1, $tbname, '*', 'and tbid = '.$tbid);          $keys = array_keys($rs);          $values = array_values($rs);          for($i = 0; $i < count($keys); $i++){              $db->insert(0, 0, 'tb_log_content', array(                  'logid = '.$returnid,                  'tbkey = "'.$keys[$i].'"',                  'tbvalue = "'.$values[$i].'"',                  'comment = "'.$commentArray[$keys[$i]].'"'             ));          }      }      public function updateStart($tbid, $tbname){          global $db;          //查询表注释          $db->query('show table status where name = "'.$tbname.'"');          $tb = $db->fetch();          //插入日志主表          $returnid = $db->insert(0, 2, 'tb_log', array(              'adminid = '.$_SESSION['admin']['id'],              'type = 2',              'tableid = '.$tbid,              'tablename = "'.$tbname.'"',              'comment = "'.$tb['Comment'].'"',              'dt = now()'         ));          //查询修改前数据信息          $rs = $db->select(0, 1, $tbname, '*', 'and tbid = '.$tbid);          $keys = array_keys($rs);          $values = array_values($rs);          $this->primaryid = $returnid;          $this->tbid = $tbid;          $this->tbname = $tbname;          $this->keys = $keys;          $this->values = $values;      }      public function updateEnd(){          global $db;          //查询字段注释          $db->query('show full columns from '.$this->tbname);          $tb = $db->fetchAll();          foreach($tb as $v){              $commentArray[$v['Field']] = $v['Comment'];          }          //查询修改后数据信息          $rs = $db->select(0, 1, $this->tbname, '*', 'and tbid = '.$this->tbid);          $currentvalues = array_values($rs);          //前后信息进行比较          for($i = 0; $i < count($currentvalues); $i++){              if($this->values[$i] !== $currentvalues[$i]){                  $db->insert(0, 0, 'tb_log_content', array(                      'logid = '.$this->primaryid,                      'tbkey = "'.$this->keys[$i].'"',                      'tbvalue = "'.$this->values[$i].'"',                      'currenttbvalue = "'.$currentvalues[$i].'"',                      'comment = "'.$commentArray[$this->keys[$i]].'"'                 ));              }          }      }      public function delete($tbid, $tbname){          global $db;          //查询表注释          $db->query('show table status where name = "'.$tbname.'"');          $tb = $db->fetch();          //插入日志主表          $returnid = $db->insert(0, 2, 'tb_log', array(              'adminid = '.$_SESSION['admin']['id'],              'type = 3',              'tableid = '.$tbid,              'tablename = "'.$tbname.'"',              'comment = "'.$tb['Comment'].'"',              'dt = now()'         ));          //查询字段注释          $db->query('show full columns from '.$tbname);          $tb = $db->fetchAll();          foreach($tb as $v){              $commentArray[$v['Field']] = $v['Comment'];          }          //查询所有字段信息,插入日志从表          $rs = $db->select(0, 1, $tbname, '*', 'and tbid = '.$tbid);          $keys = array_keys($rs);          $values = array_values($rs);          for($i = 0; $i < count($keys); $i++){              $db->insert(0, 0, 'tb_log_content', array(                  'logid = '.$returnid,                  'tbkey = "'.$keys[$i].'"',                  'tbvalue = "'.$values[$i].'"',                  'comment = "'.$commentArray[$keys[$i]].'"'             ));          }      }  }

引入之后,就可以开始使用了。

select

$log->insert(82, 'tb_member');

update

$log->updateStart(82, 'tb_member');   //中间放更新操作代码   $log->updateEnd();

delete

$log->delete(82, 'tb_member');

可以看到,一共只需要两个参数即可,分别是表ID(主键)和表名称。

另外需要强调一点,表注释和字段注释一定要完整,因为记录的信息包含注释,目的就是为了查阅的时候能清楚哪个字段是干什么用的。

下面就看下成品吧

mysql管理系统操作日志设计举例分析

mysql管理系统操作日志设计举例分析

“mysql管理系统操作日志设计举例分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql管理系统操作日志设计举例分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

linux系统管理mail电子邮件日志的示例分析

这篇文章主要为大家展示了“linux系统管理mail电子邮件日志的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux系统管理mail电子邮件日志的示例分析”这篇文章吧。我们都知道很
2023-06-13

揭秘操作系统内存分配和释放的秘密,发现计算机资源管理的精巧设计

操作系统内存分配和释放是计算机资源管理的重要组成部分,它决定了应用程序如何使用计算机的物理内存。本文将深入探索内存分配和释放的原理和实现,揭秘计算机如何高效管理内存资源,并提供一些代码示例来演示这些概念。
揭秘操作系统内存分配和释放的秘密,发现计算机资源管理的精巧设计
2024-02-12

编程热搜

目录