get_results с использованием wpdb

12

Я пытаюсь получить информацию из моей базы данных. Я хотел показать все, pagesиспользуя это утверждение, но я получаю пустоеARRAY

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

echo $result; // display data

Вывод:

  ARRAY

РЕДАКТИРОВАТЬ : после изменения ниже предложения, я сейчас использую это. но я до сих пор не получаю никаких результатов:

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/>';

    }
user1933824
источник
Попробуйте обернуть $wpdb->wp_postsфигурными скобками, т.е. {$wpdb->wp_posts}..
t31os

Ответы:

18
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/>';
}
Балаш
источник
привет @balamurugan, я попробовал твой ответ, но я все еще не получаю никаких результатов. Вы можете увидеть мою часть редактирования выше.
user1933824
на самом деле то, что ты получаешь, и ты удалишь ... из моего кода. я проверил это и получил весь идентификатор страницы
Балас
Я использую мою часть редактирования, как видно из моего исходного поста. Я пытался echo $resultпросто убедиться, queryчто я получаю данные из того, что я получаю, это печать Array. когда я использую, echo $page->IDя ничего не получаю.
Я
Вы просто полностью копируете и вставляете этот код. Это все, что нужно сделать, чтобы получить результат.
Балас
да, это сработало! когда я пытаюсь просмотреть мой и ваш код, единственное отличие, которое я увидел, это то, что $tablename = $wpdb->prefix.'posts';эта часть не была описана в документации кодекса. Вы можете объяснить мне, почему это работает?
user1933824
3

У вас небольшое недоразумение:

При вызове $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

Итак, ваш последний запрос будет выглядеть так :

$wpdb->get_results( "SELECT * FROM {$wpdb->posts} WHERE post_type = 'page'" );
кайзер
источник
1
+1 за это, спасибо. но мне нужно было отдать должное человеку, который первым ответил мне, он уже дал правильный ответ, я просто не мог следовать его указаниям.
user1933824
Конечно. Sidenote: Как я уже говорил, $wpdb->prefixне следует использовать для встроенных таблиц. Просто позвоните им напрямую. Исправлено это и его ответ.
Кайзер
1

Попробуйте следующий код. Я столкнулся с подобной проблемой и решил ее, удалив $ wpdb из поля 'FROM'.

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

echo $result; // display data
Вахид Кадвайкар
источник
0

Под «пустым массивом» подразумевается «пустой массив» или вывод «ARRAY». Если это последнее, то это ожидаемый результат. Вам нужно перебрать этот массив и отобразить результаты соответственно.

Ссылка: http://codex.wordpress.org/Class_Reference/wpdb#SELECT_Generic_Results

Срикант А.Д.
источник