サポート » 使い方全般 » wpdbクラスでデータの呼び出しがうまくいかない

  • 解決済 吉田 丈治

    (@geeorgey)


    function countdata(){
    global $wpdb;
    $datacount = $wpdb->get_var('SELECT SUM(meta_value) FROM $wpdb->wp_usermeta WHERE meta_key = "counts"');
    return $datacount;
    }
    add_shortcode('printcountdata','countdata');

    functions.phpにこのようなコードを書いて、ショートコード[printcountdata]で呼び出したいと思っていますが、うまくいっておりません。
    wp_usermetaのmeta_keyがcountsのレコードのvalueを合算して表示したいのです。
    MySQL上でSQLを走らせてみたところ問題なく合算値が表示されました。
    どのあたりがまずいのでしょう。お助けください。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • えーっと……SQLは合っていると仮定して……シングルクォート内では変数展開は行われないので$wpdb->wp_usermetaがそのままクエリに入ってしまってますね。

    イマイチキレイじゃない気もするけど

    $wpdb->get_var('SELECT SUM(meta_value) FROM ' . $wpdb->wp_usermeta . ' WHERE meta_key = "counts"');

    なりなんなり……

    Hinaloeさんいつもありがとうございます。初歩的な間違いですみませんでした。
    が…解決せず。

    やりたいことはこのページにある以下のコードと同様です。

    $meta_key = 'miles';  //実在するメタキーに変更する
    $allmiles = $wpdb->get_var( $wpdb->prepare(
    	"
    		SELECT sum(meta_value)
    		FROM $wpdb->postmeta
    		WHERE meta_key = %s
    	",
    	$meta_key
    ) );

    こちらを参考に以下の様にしてみたものの数値が返ってこずでした。

    function countdata(){
    global $wpdb;
    $meta_key = 'counts';
    $allsbns = $wpdb->get_var( $wpdb->prepare(
            "
                    SELECT sum(meta_value)
                    FROM $wpdb->wp_usermeta
                    WHERE meta_key = %s
            ",
            $meta_key
    ) );
    return $allsbns;
    }
    add_shortcode('printcountdata','countdata');

    ちなみにMySQLでは以下のコマンドで必要なデータが帰ってきています。

    select sum(meta_value) from wp_usermeta where meta_key = "counts";
    モデレーター Daisuke Takahashi

    (@extendwings)

    return $allsbns;ではなくvar_dump( $allsbns );にしたら何か出できませんか?

    NULLとでました。NULL!?

    $user_count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->users" );
    return $user_count;

    これは問題なく動きますね…どこを間違えているのだろう

    undefined index… 出てるはず

    $wpdb->usermeta

    ビンゴでした。

    $wpdb->usermeta

    接頭辞…要らないんですね。勉強になりました!!!!皆様ありがとうございます。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「wpdbクラスでデータの呼び出しがうまくいかない」には新たに返信することはできません。