Probleme cu $wpdb->get_var care nu returnează rezultate în WordPress

2 iul. 2012, 23:54:09
Vizualizări: 17.1K
Voturi: 2

Am rulat interogarea direct în mysql și am confirmat că returnează un rezultat:

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)

În template-ul meu, încerc același lucru:

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

    //$wpdb->posts reprezintă tabela wp_posts
    //$post->ID este ID-ul postului curent de tip pagină,
    //asociat cu pagina acestui 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 "ID-ul imaginii este {$image->ID}";
    echo wp_get_attachment_image($image->ID);

endwhile; endif; ?>

$post->ID returnează 68. Totuși, valoarea atribuită lui $image nu este înregistrarea, ci null.

0
Toate răspunsurile la întrebare 1
2

$wpdb->get_var returnează o singură variabilă, dar instrucțiunea ta SQL conține SELECT * care returnează un rând cu multiple coloane.

Trebuie să modifici instrucțiunea SQL în SELECT ID ... în loc de SELECT * ...

3 iul. 2012 00:12:02
Comentarii

Aceasta va returna doar id-ul, dar de fapt get_row era ceea ce căutam.

JohnMerlino JohnMerlino
5 iul. 2012 22:36:57