使用php代码从mysql wordpress数据库中删除重复的注释

时间:2013-06-17 20:06:45

标签: php mysql

我有wordpress博客,我在一些帖子下有大量评论。我最近发现有些评论重复了两三次。我想使用php代码从Wordpress的mysql数据库中删除表wp_comments中的重复元素(通过从服务器打开php文件)。我使用了这段代码,但它不起作用。有什么想法吗?当我运行这个文件时,我有空白页面(没有错误,但仍有重复的评论)。

代码:

<?php

include_once($_SERVER['DOCUMENT_ROOT'].'/wp-load.php' );

global $wpdb;

$comments = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."_comments"
   ." ORDER BY comment_post_ID, comment_content");

$prev = NULL;

foreach($comments as $comment) {

  if ($prev && $prev->comment_content == $comment->comment_content
    && $prev->comment_post_ID == $comment->comment_post_ID ) {

  echo 'It works';
    $wpdb->query("DELETE FROM ".$wpdb->prefix."_comments WHERE comment_ID == ".$comment->comment_ID);

  }
  else
    $prev = $comment;
}

$wpdb->print_error();

?>

也许您对此代码有更好的了解?

2 个答案:

答案 0 :(得分:0)

我只是花时间格式化代码,所以我可以阅读它。 {之后没有else。我相信如果你将它包含在if语句的第一部分中则需要它。在任何情况下,在一个应用程序中省略它们但在相同的代码块中使用它们不会少,这是一种可怕的做法。使您的代码难以阅读/维护。

此外,如果错误被抑制,您可能不会看到错误。

也许我需要了解我的PHP,但if ($prev)是否真的如此?这不是一个布尔值吗?获取查询时不是一段时间。也许是。

答案 1 :(得分:0)

在打开php标记

之后,将以下内容放在脚本之上
error_reporting(E_ALL); 
ini_set( 'display_errors','1');

运行它并告诉我们你看到的一切。