-1

我有 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();

?>

也许您对此代码有更好的想法?

4

2 回答 2

0

我只是花时间格式化您的代码,以便我可以阅读它。{你的后面没有else。如果您将其包含在 if 语句的第一部分中,我相信它是必需的。无论如何,在一个应用程序中省略它们,但在同一代码块中的另一个应用程序中使用它们,是一种糟糕的做法。使您的代码难以阅读/维护。

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

也许我需要复习一下我的 PHP,但会if ($prev)是真的吗?这不是布尔值吗?获取查询时不会有一段时间。也许是的。

于 2013-06-17T20:09:09.290 回答
0

将以下内容放在脚本顶部,在开始的 php 标记之后

error_reporting(E_ALL); 
ini_set( 'display_errors','1');

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

于 2013-06-17T20:19:27.097 回答