php中的错误 - 在非对象上调用成员函数get_results()

时间:2013-06-17 18:44:15

标签: php

我有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 ) {

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

  }
  else
    $prev = $comment;
}
?>

我收到了这个错误:

* GT;致命错误:在第5行的... / commentsremoving.php中的非对象上调用成员函数get_results()*

更新

感谢Sheikh Heera我现在没有错误消息,但我的代码不起作用 - 没有重复的评论被删除。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

每当您想在WordPress之外使用WordPress的功能时,您都可以使用

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

然后您可以使用WordPress的功能。 Check This.如果您只想访问数据库函数,那么

require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-config.php' );
require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-includes/wp-db.php' );
if (!$wpdb) {
    $wpdb = new wpdb( DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);
} else {
    global $wpdb;
}

答案 1 :(得分:0)

在第5行后面的代码中粘贴以下内容。脚本现在是否在页面中显示任何错误?

$wpdb->print_error(); 

答案 2 :(得分:0)

我的猜测是你不需要这个文件顶部的wp-load.php。要加载WordPress以便可以使用其全局变量和函数,需要此文件。尝试将其放在全局变量之前的文件顶部:

require( '/path/to/wp-load.php' );