get_results przy użyciu wpdb


12

Próbuję pobrać informacje z mojej bazy danych. Chciałem wyświetlić wszystkie pagesza pomocą tego oświadczenia, ale dostaję pustkęARRAY

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

echo $result; // display data

Wynik:

  ARRAY

EDYCJA : Po zmianie poniższych sugestii, teraz używam tego. ale nadal nie otrzymuję żadnych wyników:

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

    }

Spróbuj owinąć $wpdb->wp_postsnawiasami klamrowymi, tj. {$wpdb->wp_posts}..
t31os

Odpowiedzi:


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

cześć @balamurugan, próbowałem twojej odpowiedzi, ale nadal nie otrzymuję żadnych wyników. możesz zobaczyć moją część Edytuj powyżej.
user1933824,

właściwie to, co otrzymujesz i usuwasz ... z mojego kodu. Przetestowałem to i otrzymałem cały identyfikator strony
Balas

używam mojej części edycji, jak widać powyżej mojego oryginalnego postu. starałem się echo $resulttylko upewnić, że odbieram dane z tego, queryco otrzymuję, to wydruk Array. kiedy używam, echo $page->IDnic nie dostaję. Naprawdę nie jestem pewien, dlaczego ..
user1933824,

po prostu skopiuj i wklej całkowicie ten kod. To wszystko, aby uzyskać wynik.
Balas,

tak, zadziałało! kiedy próbuję przejrzeć mój kod i twój, jedyną różnicą, jaką zobaczyłem, jest to, że $tablename = $wpdb->prefix.'posts';ta część nie była w dokumentacji kodeksu. czy możesz mi wyjaśnić, dlaczego to działa?
user1933824,

3

Masz niewielkie nieporozumienie:

Podczas wywoływania $wpdbotrzymujesz listę właściwości, które zawierają podstawowe nazwy tabel:

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

Więc twój ostateczny zapytanie będzie wyglądać jak poniżej:

$wpdb->get_results( "SELECT * FROM {$wpdb->posts} WHERE post_type = 'page'" );

1
+1 za to, dziękuję. ale musiałem wyrazić uznanie osobie, która odpowiedziała mi pierwsza, on już udzielił prawidłowej odpowiedzi, po prostu nie byłem w stanie wykonać jego instrukcji.
user1933824,

Pewnie. Sidenote: Jak już powiedziałem, $wpdb->prefixnie należy go używać w przypadku wbudowanych tabel. Zadzwoń do nich bezpośrednio. Naprawiono, że to także jego odpowiedź.
Kaiser

1

Wypróbuj następujący kod. Napotkałem podobny problem i rozwiązałem go, usuwając $ wpdb z pola „FROM”.

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

echo $result; // display data

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.