1351
Typecho文章/分类cid排序 简介:前言Typecho的文章编号(cid 下文已cid说明)是不联系的,虽然没什么影响,但是对于喜欢完美一些的人(强迫症)来说,真的是忍不了一点...下面直接上解决办法,包括分类的mid注:请在php7.0+版本执行,本操作设计数据库,请提前做好备份工作,避免造成损失!文章cid需要注意的是:文章cid重新排列后,上传的附件所属文章可能不正确,需手动修改。如果文章内容使用的是外链,则无影响,无需修改。将下面代码保存为php上传到网站的根目录,然后访问该文件即可例如www.baidu.com/cid.php,在地址栏访问即可,cid.php是你保存php文件的名称 <?php
/**
* Typecho重新排列分文章cid让他连续
*/ // 设置数据库参数
$hostname_blog = "localhost";
$database_blog = "数据库名";
$username_blog = "数据库用户名";
$password_blog = "数据库密码"; // 连接到数据库
$blog = mysqli_connect($hostname_blog, $username_blog, $password_blog, $database_blog) or die(mysqli_connect_error()); // 设置计数器的初始值
$no = 1; // 定义一个函数来更新文章cid
function change_id($cid)
{ global $no, $blog; // 更新文章cid,并更新与类别、标签、自定义字段和评论的关系 mysqli_query($blog, "UPDATE typecho_contents SET cid = $no WHERE cid = $cid"); mysqli_query($blog, "UPDATE typecho_relationships SET cid = $no WHERE cid = $cid"); mysqli_query($blog, "UPDATE typecho_comments SET cid = $no WHERE cid = $cid"); $no = $no + 1;
} // 从数据库中选择所有文章cid,按其 cid 排序
$query_postRecord = "SELECT cid FROM typecho_contents ORDER BY cid ASC";
$result = mysqli_query($blog, $query_postRecord); // 循环浏览文章并更新其 cid
while ($row = mysqli_fetch_assoc($result)) { change_id($row['cid']);
} // 重置文章 cid 的自动递增值
mysqli_query($blog, "ALTER TABLE typecho_contents AUTO_INCREMENT = $no"); echo 'ok'; ?>分类mid使用方法同上 <?php
/**
* Typecho重新排列分类和标签(meta)不连续的mid
*/ // 数据库参数
$hostname_blog = "localhost";
$database_blog = "数据库名";
$username_blog = "数据库用户名";
$password_blog = "数据库密码";
$blog = new mysqli($hostname_blog, $username_blog, $password_blog, $database_blog); // 检查错误
if ($blog >connect_error) { trigger_error($blog >connect_error, E_USER_ERROR);
} // 定义全局变量以跟踪“no”值
$no = 1; // 定义一个函数来更新 mid 及其关系
function change_id($mid)
{ global $no; global $blog; // 更新mid $sql = "UPDATE typecho_metas SET mid = ? WHERE mid = ?"; $stmt = $blog >prepare($sql); $stmt >bind_param("ii", $no, $mid); $stmt >execute(); // 更新关系 $sql = "UPDATE typecho_relationships SET mid = ? WHERE mid = ?"; $stmt = $blog >prepare($sql); $stmt >bind_param("ii", $no, $mid); $stmt >execute(); // 递增“no”值 $no++;
} // 从数据库中获取所有mid
$query_postRecord = "SELECT mid FROM typecho_metas ORDER BY mid ASC";
$all_postRecord = $blog >query($query_postRecord); // 循环遍历结果并调用 change_id() 函数
while ($row_postRecord = $all_postRecord >fetch_assoc()) { change_id($row_postRecord['mid']);
} // 重置typecho_metas表的自动增量值
$blog >query("ALTER TABLE typecho_metas AUTO_INCREMENT = $no"); echo 'ok';
?>结束到这里就结束了,这只是一篇总结,也是给自己看的,记录一下,免得以后忘了...补充:之前使用hexo,文章已经全部迁移过来了