Emlog gid自增断号自动插入

2018-2-27 1 PHP代码 蓝优

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;
}



本文来自阅美乐投稿 来源链接:http://wrz.link/1.html

标签: 转载 代码整理
版权声明:若无特殊注明,本文皆《蓝优》原创,转载请保留文章出处。
本文链接:Emlog gid自增断号自动插入 - http://www.92mo.cn/daima/123.html

发表新评论

快捷功能:

全部评论(1条)
  1. 头像
    回复 ag亚游手机版 群众 2018-05-10 19:21

    神城帐篷外面站着五个魁梧的大汉,清一色的神皇二重的强者,而且都是一些莽汉,头脑简单,四肢发达的一群人,这是神府的人,也就是说这是神府派来的挑战者。