91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql管理系統操作日志設計舉例分析

發布時間:2021-11-18 11:23:01 來源:億速云 閱讀:156 作者:iii 欄目:web開發

本篇內容介紹了“mysql管理系統操作日志設計舉例分析”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

在開始做之前,必須把兩個日志分清楚,那就是普通操作日志和業務操作日志,這兩者有何區別?

在我理解,普通操作日志就是單表的操作記錄,而業務操作日志則就是一系列的普通操作日志的集合。

打個比方,用戶需要購買一樣寶貝,已經到了下單那步,下單就是個業務,這個業務背后就是一系列的業務,如:生成訂單 → 生成商品快照 → 發送一條站內信 → 刪除購物車里對應寶貝。

這樣一個下單操作就包含了4部分,可以把這4部分看成是4張表,分別對這4張表進行對應的操作,就實現了業務。

但今天我要講的不是業務操作日志,因為不同項目的業務不盡相同,所以它無法做成通用模塊,而我要講的,就是普通操作日志。

上面解釋了一大段,下面干貨就要亮相了,先洗把臉清醒下。

首先,哪些地方需要記錄操作日志?執行insert、update、delete這3個操作的時候,就需要進行日志,而日志執行的先后順序如下

mysql管理系統操作日志設計舉例分析

順序清楚后,就來看下我寫的一份日志操作類吧,***版隨便謝謝的,重復代碼有點多,還未來得及優化。

class LOG{      protected $primaryid;      protected $tbid;      protected $tbname;      protected $keys;      protected $values;      /**       * 參數說明       * int              $tbid       查詢指定表的id       * string           $tbname     數據庫表名       */     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管理系統操作日志設計舉例分析”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

西乌珠穆沁旗| 尚义县| 达孜县| 富宁县| 邯郸县| 长岭县| 榕江县| 安阳市| 鹰潭市| 会泽县| 嘉禾县| 新营市| 沅陵县| 疏附县| 商城县| 科技| 奉贤区| 永年县| 丰城市| 剑河县| 宁河县| 永康市| 瓮安县| 北碚区| 台南县| 吴旗县| 堆龙德庆县| 库伦旗| 孟州市| 高青县| 苏州市| 土默特右旗| 和林格尔县| 读书| 清镇市| 翁源县| 长垣县| 沁水县| 平山县| 雅江县| 本溪市|