emlog文章連接使用gid自增號作為文章的ID,但是由于后臺有刪除文章的功能,一旦刪除文章那么gid自增就會出現斷號。 其實斷號問題解決很方便,只要在添加文章的時候判斷gid之前的有沒有斷號問題,有的話直接插入,沒有的話自增。 我這里的解決方法是這樣的,我把gid自增段順序讀取作為值寫入數組,自增段是從1開始的,但是數組鍵值是0開始的,那么先把數組($gidarr[0]='0')賦值掉,然后把$gidarr[]=gid,然后只要發現$gidarr鍵和鍵值不等就是斷號了。 找到我們的addlog添加文章和頁面函數。路徑在include/model/log_model.php。
原版代碼:
/** * 添加文章、頁面 * * @param array $logData * @return int */ function addlog($logData) { $kItem = array(); $dItem = array(); foreach ($logData as $key => $data) { $kItem[] = $key; $dItem[] = $data; } $field = implode(',', $kItem); $values = "'" . implode("','", $dItem) . "'"; $this->db->query("INSERT INTO " . DB_PREFIX . "blog ($field) VALUES ($values)"); $logid = $this->db->insert_id(); return $logid; }
改后代碼:
/** * 添加文章、頁面 * * @param array $logData * @return int */ function addlog($logData) { $kItem = array(); $dItem = array(); foreach ($logData as $key => $data) { $kItem[] = $key; $dItem[] = $data; } $field = implode(',', $kItem); $values = "'" . implode("','", $dItem) . "'"; $gidarr[0]='0'; $res = $this->db->query("SELECT gid From " . DB_PREFIX . "blog ORDER BY gid ASC"); while ($row = $this->db->fetch_array($res)) { $gidarr[] = $row['gid']; } foreach($gidarr as $key=>$val){ if($key!=$val){ $field = 'gid,'.$field; $values = "'".$key."',".$values; break; } } $this->db->query("INSERT INTO " . DB_PREFIX . "blog ($field) VALUES ($values)"); $logid = $this->db->insert_id(); return $logid; }原文http://beikeit.com/post-680.html
轉載請注明出處 AE博客|墨淵 ? emlog 解決文章gid斷號問題
發表評論