在非对象上调用成员函数get_row(),无法在插件中使用全局$wbdp


Call to a member function get_row() on a non-object, Unable to use global $wbdp inside a plugin

我正在为我的wordpress网站构建一个自定义插件。

我创建了一个名为"checkrank"的php文件,该文件从名为"cranking"的自定义表中获取数据

$uid = $GET['id']; 
function checkExists($id){
    global $wpdb;
    $table_name = $wpdb->prefix . 'cranking';
    $exists = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $table_name WHERE id = %d" ) );
    $error = $wpdb->print_error();
    if(count($exists) > 0){
       echo 'Exists!';
    } else {
       echo 'Does not exist!';
    }
 return $error;
}
 checkExists($uid);

该代码只是检查启动表是否有提供id的用户。

问题是,每当我运行这个php文件时,我都会收到以下错误:PHP致命错误:在非对象上调用成员函数get_row()

我哪里有错?我认为$wbdp没有启动。

您的$wpdb::prepare()缺少参数,如果在查询中写入%d,则需要添加一个参数$id

来源:http://codex.wordpress.org/Class_Reference/wpdb#Protect_Queries_Against_SQL_Injection_Attacks

$wpdb->prepare( "SELECT * FROM $table_name WHERE id = %d", $id )