$wpdb->get_var не возвращает результат

2 июл. 2012 г., 23:54:09
Просмотры: 17.1K
Голосов: 2

Я выполнил запрос в 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 - это таблица wp_posts
    // $post->ID - ID текущей записи типа page,
    // которая связана со страницей этого шаблона

    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 изображения: {$image->ID}";
    echo wp_get_attachment_image($image->ID);

endwhile; endif; ?>

$post->ID возвращает 68. Однако значение, присвоенное $image - не запись, а null.

0
Все ответы на вопрос 1
2

$wpdb->get_var возвращает одну переменную, но ваш SQL-запрос содержит SELECT *, который возвращает строку с несколькими столбцами.

Вам нужно изменить SQL-запрос на SELECT ID ... вместо SELECT * ...

3 июл. 2012 г. 00:12:02
Комментарии

Это вернет только идентификатор, но на самом деле мне нужен был get_row.

JohnMerlino JohnMerlino
5 июл. 2012 г. 22:36:57

Для получения дополнительной информации https://itadminguide.com/difference-between-wpdb-get_row-get_results-get_var-and-get_query/

Dushan Dushan
18 окт. 2022 г. 12:34:08