Loading... ## 前言 最近,特别多课,而且也没啥素材好写的,我的生活也没啥好记录的,的确无聊,只能靠转载维持一下这样子。这篇文章目的是解决Typecho下文章cid、分类和标签mid不连续的问题,对于某些强迫症博主而言mid,cid不连续是看不过去的,然而我,就不介意什么,啊哈哈哈~ ## 正文 将以下两段代码分别保存为php文件,上传至网站根目录,在浏览器地访问一下即可。 <div class="tip inlineBlock warning"> 特别提醒:请在PHP7.0以下版本的服务器上执行。本操作涉及数据库,请提前做好备份工作。 </div> ###解决cid不连续的问题 重命名代码为cid.php ```php <?php /** * Typecho重新排列不连续的文章ID * 作者:http://blog.yuweiji.com/ */ $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'; ?> ``` ###解决分类和标签mid不连续的问题 重命名文件为mid.php **使用前提:分类和标签 mid 重新排列后,子分类所属父分类可能不正确,需手动修改,如无二级分类,可略过。** ```php <?php /** * Typecho重新排列分类和标签(meta)不连续的mid * 作者:http://blog.yuweiji.com/ */ $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($mid) { global $no; // 修改meta id,并修改分类、标签、自定义字段、评论的对应关系 $sql = 'update typecho_metas set mid = ' . $no . ' where mid = ' . $mid; mysql_query($sql); $sql = 'update typecho_relationships set mid = ' . $no . ' where mid = ' . $mid; mysql_query($sql); $no = $no + 1; } mysql_select_db($database_blog, $blog); $query_postRecord = "SELECT mid FROM typecho_metas ORDER BY mid ASC"; $all_postRecord = mysql_query($query_postRecord); $row_postRecord = mysql_fetch_assoc($all_postRecord); do { change_id( $row_postRecord['mid'] ); } while ($row_postRecord = mysql_fetch_assoc($all_postRecord)); // 重新设置meta id自增起点 mysql_query('alter table typecho_metas AUTO_INCREMENT = ' . $no); echo 'ok'; ?> ``` Last modification:January 14, 2019 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 1 If you think my article is useful to you, please feel free to appreciate