web-dev-qa-db-ja.com

wpdbを使ったget_results

データベース上の情報を検索しようとしています。この文を使用してすべてのpagesを表示したいのですが、空白のARRAYが表示されます。

global $wpdb;
$result = $wpdb->get_results (
        "
        SELECT * 
        FROM  $wpdb->wp_posts 
        WHERE post_type =  'page'
        "
        );

echo $result; // display data

出力:

  ARRAY

_ edit _ :以下の提案を変更した後、現在これを使用しています。しかし、まだ結果が得られません。

global $wpdb;

    $posts = $wpdb->wp_posts;
    $result = $wpdb->get_results( " SELECT * FROM  $posts WHERE 'post_type' =  'page' "  );

    foreach ($result as $page) {
            echo $page->ID.'<br/>';

    }
7
user1933824
global $wpdb;

$result = $wpdb->get_results ( "
    SELECT * 
    FROM  $wpdb->posts
        WHERE post_type = 'page'
" );

foreach ( $result as $page )
{
   echo $page->ID.'<br/>';
   echo $page->post_title.'<br/>';
}
11
Balas

あなたは少し誤解をしています:

$wpdbを呼び出すと、テーブルのコア名を含むプロパティのリストが表示されます。

// The custom prefix from wp-config.php
// only needed for custom tables
$wpdb->prefix

// Tables where you don't need a prefix: built in ones:
$wpdb->posts
$wpdb->postmeta
$wpdb->users

つまり、最終的なクエリは like thisのようになります。

$wpdb->get_results( "SELECT * FROM {$wpdb->posts} WHERE post_type = 'page'" );
3
kaiser

次のコードを試してください。私は同様の問題に直面し、 'FROM'フィールドから$ wpdbを削除することによってそれを解決しました。

global $wpdb;
$result = $wpdb->get_results (
            "
            SELECT * 
            FROM  wp_posts 
            WHERE post_type =  'page'
            "
            );

echo $result; // display data
1
Wahid Kadwaikar

「空の配列」とは、「空の配列」を意味するのか、それとも「ARRAY」の出力を意味するのでしょうか。それが後者の場合、それは期待される出力です。その配列をループしてそれに応じて結果を表示する必要があります。

参照: http://codex.wordpress.org/Class_Reference/wpdb#SELECT_Generic_Results

0
Srikanth AD