web-dev-qa-db-ja.com

$ wpdb-> get_varが結果を返さない

私はmysqlを起動し、このクエリが結果を返すことを確認しました:

mysql> SELECT * FROM wp_posts WHERE post_parent = 68 AND post_type = 'attachment' AND post_name = 'side-logo-auto2' LIMIT 1;
1 row in set (0.00 sec)

私のテンプレートでも、同じことを試みます。

<?php if ( have_posts() ) : while ( have_posts() ) : the_post();

    //$wpdb->posts is wp_posts table
    //$post->ID is current post of post_type page, 
    //that is associated with page of this template

    global $wpdb;
    $image = $wpdb->get_var(
        $wpdb->prepare(
            "SELECT * FROM $wpdb->posts
             WHERE post_parent = %d
             AND post_type = %s
             AND post_name = %s
             LIMIT 1
            ",
            $post->ID,
            'attachment',
            'side-logo-auto2'
        )
    );
    echo "The image id is {$image->ID}";
    echo wp_get_attachment_image($image->ID);

endwhile; endif; ?> 

$ post-> IDは68を返します。それでも、$ imageに割り当てられた値はレコードではなく、むしろnullです。

2
JohnMerlino

$wpdb->get_varは単一の変数を返しますが、SQLステートメントには複数列の行を返すSELECT *があります。

SQL文をSELECT ID ...の代わりにSELECT * ...に変更する必要があります。

8
anu