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

    }

Попробуйте обернуть $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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.