web-dev-qa-db-ja.com

$ wpdb変数がこのエラーをスローします。非オブジェクト内のメンバー関数get_results()を呼び出します。

私はこのコードから次のようなエラーが発生しました。「非オブジェクトのメンバ関数get_results()を呼び出す」

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

function vendorDatails( $param)
{
    if ((substr ($param, 0, 0)) == '#')
    {
        substr($param, 1);
    }

    $order_ids = $wpdb->get_results( 
                                    "
                                     SELECT DISTINCT vendor_id 
                                     FROM $wpdb->lqrhxf_pv_commission 
                                     WHERE order_id = %d
                                    ",
                                        $param
                                );

    foreach ( $order_ids as $order_id )
    {
        echo $order_id->vendor_id;
    }
}

Dbパラメータは正常にロードされましたが、$ wpdb変数を使用すると上記の行にエラーが表示されます。

 $order_ids = $wpdb->get_results( 
1
GabrieleU

これは PHP変数スコープ の問題です。関数に$wpdbは定義されていません。

追加する

global $wpdb;

$wpdbオブジェクトを使用しようとする前に。

6
Milo

WordPress以外のWordPressの機能を使用する場合はいつでも使用できます

include_once($ _ SERVER ['DOCUMENT_ROOT']。 '/ wp-load.php');その後、WordPressの機能を使用できます。これをチェックして。データベース関数にアクセスしたいだけなら

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; }

0
Yogesh Bangar