GET PHP FATAL Error on Globalized$wpdb:调用非对象上的成员函数INSERT()-我没有线索。怎么办呢?

时间:2011-02-13 作者:Brandon

我正在尝试利用这个功能。我不明白为什么我仍然会遇到PHP错误。我所能理解的是,由于某种原因,模板无法访问$wpdb。我不知道函数中需要放置哪一行。包含此函数的php(在主题文件夹中)文件。请帮帮我!!

function submitWeightUpdate( $userid, $weight ) {
    global $wpdb;

    $result = $wpdb->insert( \'wp_weights\', array( \'user_id\' => $userid, \'current_weight\' => $weight ), array( \'%d\', \'%d\' ) );

    if (empty($_POST[\'weight\'])) {
        $return[\'error\'] = true;
        $return[\'msg\'] = \'You did not enter a weight.\';
    }
    else {
        $return[\'error\'] = false;
        $return[\'msg\'] = \'You\\\'ve entered: \' . $weight . \' as your new weight.\';
    }

    echo json_encode($return);
} 
我还尝试将主题设置为默认主题,但仍然无法正常工作,所以我不知道它会出什么问题!

3 个回复
SO网友:hakre

您在globalize上做得很好,错误消息只是告诉您调用了$wpdb上不存在的函数。

只需检查$wpdb是否包含您感兴趣的对象:

if (is_object($wpdb) && is_a($wpdb, \'wpdb\')) {
    $result = $wpdb->insert( \'wp_weights\', array( \'user_id\' => $userid, \'current_weight\' => $weight ), array( \'%d\', \'%d\' ) );
}
或者,您可以在全局行下方添加此内容以了解更多信息:

global $wpdb;
var_dump($wpdb); // dump variable type and contents.
另外,请尝试:

require_once( ABSPATH . \'wp-load.php\' );
global $wpdb;
您可能还没有wordpress准备好在$wpdb中提供所需的内容。

SO网友:Ethan Seifert

当$wpdb出现在您的特定函数中时,它可能已经全球化了。尝试检查$GLOBALS,如果有$wpdb的条目,请删除行$global$wpdb;在函数开始时。

SO网友:Kanika Sud

我面临着这个令人沮丧的问题。所有核心功能都不起作用。

因此,我包括以下内容:

require( \'../../../wp-load.php\' );
更好的做法是:

if(!defined(ABSPATH)){
    $parse_uri = explode( \'wp-content\', $_SERVER[\'SCRIPT_FILENAME\'] );
    var_dump($parse_uri);
    $parse_uri = str_ireplace(\'index.php\', \'wp-load.php\', $parse_uri);
    require_once( $parse_uri[0]);
}

结束

相关推荐

如何将函数调用添加到插件的options.php默认提交例程?

我正在将两个插件合并为一个插件。我想在新插件的设置面板中选中第二个插件的激活例程作为复选框。但是,我不确定在提交选项时如何执行函数。我该怎么做?我的插件选项。php基本上是这样的。。。<form method=\"post\" action=\"options.php\"> <?php wp_nonce_field(\'update-options\'); ?> //options form goes here <input type=\"hidden