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

时间:2016-05-19170举报小编:admin

在批量删除文章前,首先得熟悉用数据库增加一篇文章时变动的有哪些表,所以请先看我以前写的一篇文章

先手动在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个表的信息