泥耶论坛 发表于 2025-10-6 12:38:53

解决Emlog文章删除后ID不连续的方法教程

年初的时候可能搬了几次数据,导致实际文章只有五百多而文章ID已经到了一千多,重要的原因emlog在删除文章后或者误操作数据库之后ID就会断掉,现在只需要简单修改一下代码,后面新增文章的时候就会优先选择断掉的文章ID。修改步骤
1.到路径下的include/model/log_model.php文件,将原始代码如下:(emlogpro会有点不同可以延续使用)/*** 添加文章、页面** @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;}
2.修改为/**    * 添加文章、页面    *    * @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\';      $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;    }
3.再次发布文章时断的号就会补过来了
页: [1]
查看完整版本: 解决Emlog文章删除后ID不连续的方法教程