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

19 авг. 2013 г., 16:10:56
Просмотры: 175K
Голосов: 19

Я пытаюсь получить информацию из базы данных. Я хотел отобразить все страницы используя этот запрос, но получаю пустой МАССИВ

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

echo $result; // отображение данных

Вывод:

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

    }
1
Комментарии

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

t31os t31os
19 авг. 2013 г. 16:40:46
Все ответы на вопрос 4
6
30
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/>';
}
19 авг. 2013 г. 16:24:42
Комментарии

Привет @balamurugan, я попробовал твой ответ, но до сих пор не получаю никаких результатов. Ты можешь посмотреть мою часть [EDIT] выше.

user1933824 user1933824
19 авг. 2013 г. 16:34:03

Собственно, что ты получаешь и убрал ли ты ... из моего кода. Я проверил его и получаю все ID страниц.

Balas Balas
19 авг. 2013 г. 16:45:03

Я использую свою часть [EDIT], как видно выше моего оригинального поста. Я попробовал echo $result просто чтобы убедиться, что получаю данные из query, но получаю вывод Array. Когда я использую echo $page->ID, я не получаю ничего. Я действительно не понимаю почему...

user1933824 user1933824
19 авг. 2013 г. 16:52:36

вам просто нужно полностью скопировать и вставить этот код. Это всё, что нужно сделать для получения результата.

Balas Balas
19 авг. 2013 г. 16:55:16

да, это сработало! когда я сравнивал свой код и ваш, единственное отличие, которое я заметил, это часть $tablename = $wpdb->prefix.'posts'; этой части не было в документации codex. Можешь объяснить, почему это работает?

user1933824 user1933824
19 авг. 2013 г. 16:59:04

$wpdb->prefix = wp_ (префикс таблицы в базе данных), что превратится в wp_posts в базе данных. В будущем вы можете задать свой префикс, например yourname. Тогда это не повлияет на подобный код. И старайтесь всегда использовать такой подход.

Balas Balas
19 авг. 2013 г. 17:02:39
Показать остальные 1 комментариев
2

У вас небольшое недопонимание:

При обращении к $wpdb вы получаете список свойств, содержащих основные названия таблиц:

// Пользовательский префикс из wp-config.php
// нужен только для пользовательских таблиц
$wpdb->prefix

// Таблицы, где префикс не нужен: встроенные таблицы:
$wpdb->posts
$wpdb->postmeta
$wpdb->users

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

$wpdb->get_results( "SELECT * FROM {$wpdb->posts} WHERE post_type = 'page'" );
19 авг. 2013 г. 16:45:57
Комментарии

+1 за это, спасибо. Но я должен был отдать должное тому, кто ответил мне первым, он уже предоставил правильный ответ, я просто не смог следовать его инструкциям.

user1933824 user1933824
19 авг. 2013 г. 17:02:06

Конечно. Примечание: Как я уже говорил, $wpdb->prefix не следует использовать для встроенных таблиц. Просто обращайтесь к ним напрямую. Исправил это и в его ответе.

kaiser kaiser
19 авг. 2013 г. 17:08:33
0

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

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

echo $result; // вывод данных
16 июл. 2014 г. 03:46:41
0

Под "пустым массивом" вы имеете в виду 'пустой массив' или вывод 'ARRAY'? Если последнее, то это ожидаемый результат. Вам нужно пройтись по этому массиву и отобразить результаты соответствующим образом.

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

19 авг. 2013 г. 16:16:50