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;}修改成:
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;}经由过程转变是不是须要插进去语句增加gid和gid值,来自增或许插进去。 如果你有多篇文章删除,增加一篇的话,只要从入手下手的断号,逐步补全断号。

评论列表