Typecho文章cid不连续的解决方法

分享 , 笔记 197 字 2475 阅

在使用Typecho的过程中,我发现文章编号(cid)经常会出现不连续的情况,虽然不影响什么,也无关紧要,但是对于有强迫症的人来说,看着还是不舒服的。在网上找了找,看到有大佬给出了解决办法。记录一下:

<?php
$hostname_blog = "localhost";
$database_blog = "数据库名";
$username_blog = "数据库用户名";
$password_blog = "数据库密码";
$blog = mysql_pconnect($hostname_blog, 
$username_blog, $password_blog) or trigger_error(mysql_error(),E_USER_ERROR);  
$no = 1;    
function change_id($cid)
{
global $no;     
// 修改post cid,并修改分类、标签、自定义字段、评论的对应关系
$sql = 'update typecho_contents set cid = ' . $no . ' where cid = ' . $cid;
mysql_query($sql);
$sql = 'update typecho_relationships set cid = ' . $no . ' where cid = ' . $cid;
mysql_query($sql);
$sql = 'update typecho_comments set cid = ' . $no . ' where cid = ' . $cid;
mysql_query($sql);    
$no = $no + 1;
}    
mysql_select_db($database_blog, $blog);
$query_postRecord = "SELECT cid FROM typecho_contents ORDER BY cid ASC";
$all_postRecord = mysql_query($query_postRecord);
$row_postRecord = mysql_fetch_assoc($all_postRecord);    
do {
change_id( $row_postRecord['cid'] );    
} while ($row_postRecord = mysql_fetch_assoc($all_postRecord));    
// 重新设置post id自增起点
mysql_query('alter table typecho_contents AUTO_INCREMENT = ' . $no);
    echo 'ok';
    ?>

将以上代码保存为PHP文件并上传至网站根目录,在地址栏访问一下即可。

注意:
1.本操作涉及数据库,请提前做好备份工作。
2.文章cid重新排列后,上传的附件所属文章可能会出错,需手动修改。

- THE END -
0 分享
评论 ( 5 )
评论已关闭
  1. 老麦

    我感觉这样改会不会影响以后的转换,比如说我以后转到wordpress,这样修改后会不会造成以后转换时报错。

    4月2日
    1. Eking
      @老麦

      因为PHP升到7..2了,就没有验证了。

      4月2日
  2. AKERS
    AKERS

    怎么用啊??

    3月11日
    1. Eking
      @AKERS

      要在PHP7.0以下版本才可以。

      3月11日
  3. AKERS
    AKERS

    终于找到这个解决办法了。。。。我都弄成分类了没弄cid了 一会去试试!!

    3月10日
    • 小星星变奏曲 - 莫扎特
    • Moon River - Audrey Hepburn