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

在批量删除文章前,首先得熟悉用数据库增加一篇文章时变动的有哪些表,所以请先看我以前写的一篇文章 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 '执行成功';

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值