本篇內(nèi)容介紹了“MySQL管理系統(tǒng)操作日志設(shè)計舉例分析”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
十年的額濟納網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。營銷型網(wǎng)站的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整額濟納建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)從事“額濟納網(wǎng)站設(shè)計”,“額濟納網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。
在開始做之前,必須把兩個日志分清楚,那就是普通操作日志和業(yè)務(wù)操作日志,這兩者有何區(qū)別?
在我理解,普通操作日志就是單表的操作記錄,而業(yè)務(wù)操作日志則就是一系列的普通操作日志的集合。
打個比方,用戶需要購買一樣寶貝,已經(jīng)到了下單那步,下單就是個業(yè)務(wù),這個業(yè)務(wù)背后就是一系列的業(yè)務(wù),如:生成訂單 → 生成商品快照 → 發(fā)送一條站內(nèi)信 → 刪除購物車?yán)飳?yīng)寶貝。
這樣一個下單操作就包含了4部分,可以把這4部分看成是4張表,分別對這4張表進行對應(yīng)的操作,就實現(xiàn)了業(yè)務(wù)。
但今天我要講的不是業(yè)務(wù)操作日志,因為不同項目的業(yè)務(wù)不盡相同,所以它無法做成通用模塊,而我要講的,就是普通操作日志。
上面解釋了一大段,下面干貨就要亮相了,先洗把臉清醒下。
首先,哪些地方需要記錄操作日志?執(zhí)行insert、update、delete這3個操作的時候,就需要進行日志,而日志執(zhí)行的先后順序如下

順序清楚后,就來看下我寫的一份日志操作類吧,***版隨便謝謝的,重復(fù)代碼有點多,還未來得及優(yōu)化。
class LOG{ protected $primaryid; protected $tbid; protected $tbname; protected $keys; protected $values; /** * 參數(shù)說明 * int $tbid 查詢指定表的id * string $tbname 數(shù)據(jù)庫表名 */ 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()' )); //查詢修改前數(shù)據(jù)信息 $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']; } //查詢修改后數(shù)據(jù)信息 $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');
可以看到,一共只需要兩個參數(shù)即可,分別是表ID(主鍵)和表名稱。
另外需要強調(diào)一點,表注釋和字段注釋一定要完整,因為記錄的信息包含注釋,目的就是為了查閱的時候能清楚哪個字段是干什么用的。
下面就看下成品吧


“mysql管理系統(tǒng)操作日志設(shè)計舉例分析”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
當(dāng)前文章:mysql管理系統(tǒng)操作日志設(shè)計舉例分析
文章起源:http://www.chinadenli.net/article26/gghecg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、軟件開發(fā)、自適應(yīng)網(wǎng)站、微信公眾號、域名注冊、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)