专栏首页李维亮的博客PHPCMS用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 '执行成功';
?>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • phpcms v9 常用函数

    常用函数 , 打开include/global.func.php,下面存放一些公共函数 view plaincopy to clipboardprint? fu...

    joshua317
  • PHPCMS模板制作精髓

    以上标签首页不能调用,分类页和文章页都可以。从某种意义上讲 CAT = CATEGORYS[catid] 但是CATEGORYS是二维数组,可以在任意位置调用。...

    李维亮
  • 嗤!给你来点fiyocms漏洞喷雾

    0x01 背景 上周发的phpcms的漏洞分析,有些伙伴觉得比较复杂,于是便诞生本篇,通过审计一些普通的cms来一步步学习代码审计的技巧。 本篇涉及的源码...

    漏斗社区
  • PHPCMS常用SQL语句

    进入网站后台更新缓存,再添加文章试试,发布文章时 右下角的状态下是否多了一个 审核 选项 更换用户名SQL语句

    李维亮
  • 批量删除腾讯专栏文章的脚本

    批量删除腾讯专栏文章的脚本,腾讯云专栏签约后,抓取文章不插入原来连接,这个我怎么评价了呢!只好删除,走人了

    周陆军
  • PHPCMS开发常用标签

    《Scratch3魔法编程》一书采用了多平台协作的教学方式,设计中还有一个对应的工具网站。本来采用的方案是静态页+scratchGUI的开源版本部署,但是计划有...

    冠军宝爸
  • phpcms文章内容页如何自定义url

    希望phpcms跟WordPress一样,能够在文章发布页面自定义url,从而提高SEO优化吗?phpcms V9版本默认是不支持自定义网址的,不过只要跟我一起...

    李维亮
  • SQL语句查询出的数据进行字符串拼接,oracle批量删除数据库用户实例演示

    通过 dba_users 表可以查询出所有的数据库用户,我下面筛选了所有 HR 开头的数据库用户,要把他们都删掉。

    小蓝枣
  • PHP代码审计

    代码审计顾名思义就是检查源代码中的缺点和错误信息,分析并找到这些问题引发的安全漏洞,并提供代码修订措施和建议。

    信安之路
  • PHP代码审计

    代码审计顾名思义就是检查源代码中的缺点和错误信息,分析并找到这些问题引发的安全漏洞,并提供代码修订措施和建议。PHP代码审计审计套路通读全文法 ...

    企鹅号小编
  • 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-演示ORM的批量删除与更新

    系列回顾           前面的文章一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-演示ORM的基本操作和一步一步教你使用AgileE...

    魏琼东
  • PHPCMS_V9.2任意文件上传getshell漏洞分析

    PHPCMS是采用MVC设计模式开发,基于模块和操作的方式进行访问,采用单一入口模式进行项目部署和访问,无论访问任何一个模块或者功能,只有一个统一的入口。

    黑白天安全
  • 三种批量删除PLSQL写法效率的比对

    我们有一个重要的旧系统,最近夜维出现了一些问题,夜间执行5小时未完成,为了不影响业务,只能早上高峰期之前,DBA手工kill夜维进程。

    bisal
  • T-SQL基础(六)之可编程对象

    子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。

    雪飞鸿
  • MySQL数据库与JDBC编程

    表结构删除,表对象不再存在;表的所有数据被删除;该表所有相关的索引、约束也被删除。

    小锋学长
  • Rafy 框架 - 大批量导入实体

    某些场景下,开发者希望能够大批量地把实体的数据导入到数据库中。虽然使用实体仓库保存实体列表非常方便,但是其内部实现机制是一条一条的保存到数据库,当实体的个数较多...

    用户1172223
  • 网站漏洞修复对如何修复phpcms网站漏洞

    SINE安全公司在对phpcms2008网站代码进行安全检测与审计的时候发现该phpcms存在远程代码写入缓存文件的一个SQL注入漏洞,该phpcms漏洞危害较...

    技术分享达人
  • 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(下)

      所谓透视(Pivoting)就是把数据从行的状态旋转为列的状态的处理。其处理步骤为:

    Edison Zhou
  • 采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延伸系列2)

    前言 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这是一个对...

    GuZhenYin

扫码关注云+社区

领取腾讯云代金券