首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHPCMS用SQL语句对文章进行批量删除

PHPCMS用SQL语句对文章进行批量删除

作者头像
李维亮
发布2021-07-09 15:22:30
1.3K0
发布2021-07-09 15:22:30
举报
文章被收录于专栏:李维亮的博客李维亮的博客

在批量删除文章前,首先得熟悉用数据库增加一篇文章时变动的有哪些表,所以请先看我以前写的一篇文章 PHPCMS数据库入库模块制作教程 先手动在PHPCMS后台添加一篇文章,参数尽可能的详细,附件,推荐位,相关文章,能加的都加上,然后查看数据库,把表信息复制下来,删除文章后再次复制数据库表信息,用BeyondCompare进行比较,方法跟上面提到的文章相同。

通过比较发现以下几个表有所变动

v9_attachment、v9_attachment_index、v9_hits、v9_log、v9_news、v9_news_data、v9_position_data、v9_search 实际上PHPCMSV9删除文章并不完善,其实还有2个表中的内容也应该删除,它们的作用是用来存储文章关键字,以及哪些文章用了同一个关键字,这2个表分别为 v9_keyword 和 v9_keyword_data 其中 v9_log 表不用理会,他记录的是 后台操作日志,记录着增加文章,删除文章,编辑文章的操作日志

重点关注的数据表

  • v9_attachment 附件信息
  • v9_attachment_index 附件id和文章id的关系
  • v9_hits 文章点击次数
  • v9_news 文章主要信息
  • v9_news_data 文章内容及相关信息
  • v9_position_data 记录有推荐位的文章有哪些
  • v9_search 文章搜索词,搜索表中记录的词显示对应的文章
  • v9_keyword 文章关键字
  • v9_keyword_data 文章和关键字的关系

删除一篇文章要牵扯到这么多表,分析将会是一个浩大的工程啊! 咱们就以删除指定分类下的所有文章为例;首先得获取到要删除的文章id有哪些,然后就是了解各个表跟文章id的关系,以下是我的分析 表v9_attachment_index 字段keyid格式 c-6-3、c-7-5,第2个参数6、7为分类id,第3个参数3、5为文章id;通过keyid可以获取到对应的aid,而这里的aid跟表v9_attachment的aid是一一对应的,所以通过aid可以同时删除表v9_attachment和表v9_attachment_index的内容 表v9_hits中字段hitsid格式c-1-2、c-1-3 其中第3个参数2、3为文章id 表v9_news和表v9_news_data中的字段id即为文章id,且他们的id是一一对应的,可以很方便的同时删除这2个表中的信息 表v9_position_data 字段id即为文章id 表v9_search 字段id即为文章id 表v9_keyword_data 字段 contentid 格式 2-1、3-1,前面的数字2、3为文章id;字段tagid为关键字id,与表 v9_keyword中的id字段对应,也可以很方便的同时删除这2个表的信息 以下是完整的PHP代码

<?php
mysql_connect("localhost", "root", "");
mysql_select_db("pc");
$catid=7;
$getid="SELECT `id` FROM `v9_news` WHERE `catid`=$catid";
$ids=mysql_query($getid);
while($row=mysql_fetch_row($ids)){
$getaid=mysql_query("SELECT `aid` FROM `v9_attachment_index` WHERE `keyid`='c-$catid-$row[0]'");
$aids=mysql_fetch_row($getaid);
mysql_query("DELETE v9_attachment,v9_attachment_index FROM v9_attachment INNER JOIN v9_attachment_index ON v9_attachment.aid=v9_attachment_index.aid WHERE v9_attachment.aid=$aids[0]");
mysql_query("DELETE FROM v9_hits WHERE hitsid='c-1-$row[0]'");
mysql_query("DELETE v9_news,v9_news_data FROM v9_news INNER JOIN v9_news_data ON v9_news.id=v9_news_data.id WHERE v9_news.id=$row[0]");
mysql_query("DELETE FROM v9_position_data WHERE id =$row[0]");
mysql_query("DELETE FROM v9_search WHERE id =$row[0]");
$gettagid=mysql_query("SELECT `tagid` FROM `v9_keyword_data` WHERE `contentid`='$row[0]-1'");
while($tagids=mysql_fetch_row($gettagid)){
mysql_query("DELETE v9_keyword,v9_keyword_data FROM v9_keyword INNER JOIN v9_keyword_data ON v9_keyword.id=v9_keyword_data.tagid WHERE v9_keyword.id=$tagids[0]");
}
}
echo '执行成功';
?>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 通过比较发现以下几个表有所变动
  • 重点关注的数据表
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档