get_results utilizzando wpdb


12

Sto cercando di recuperare informazioni sul mio database. Volevo mostrare tutto pagesusando questa affermazione, ma sto ottenendo uno spazioARRAY

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

echo $result; // display data

Produzione:

  ARRAY

EDIT : dopo aver modificato i suggerimenti di seguito, ora sto usando questo. ma non ottengo ancora alcun risultato:

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

    }

Prova a avvolgere $wpdb->wp_postscon parentesi graffe, ad es. {$wpdb->wp_posts}..
t31os

Risposte:


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

ciao @balamurugan, ho provato la tua risposta ma non sto ancora ottenendo risultati. puoi vedere la mia parte Modifica sopra.
user1933824

in realtà cosa stai ricevendo e rimuovi ... dal mio codice. l'ho provato e ho trovato tutti gli ID pagina
Balas

sto usando la mia parte di modifica come visto sopra il mio post originale. ho provato echo $resultsolo ad assicurarmi che sto recuperando i dati da quello queryche ottengo è la stampa Array. quando uso echo $page->IDnon ottengo nulla. non sono proprio sicuro del perché ...
user1933824

basta semplicemente copiare e incollare completamente quel codice. Questo è tutto da fare per ottenere il risultato.
Balas,

sì, ha funzionato! quando provo a rivedere il mio codice e il tuo, l'unica differenza che ho visto è che $tablename = $wpdb->prefix.'posts';questa parte non era presente nella documentazione del codice. puoi spiegarmi perché funziona?
user1933824

3

Hai un leggero malinteso:

Quando si chiama $wpdb, si ottiene un elenco di proprietà che contengono i nomi principali delle tabelle:

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

Quindi la tua query finale sarebbe simile a questa:

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

1
+1 per questo, grazie. ma dovevo dare credito alla persona che mi ha risposto per prima, mi ha già fornito la risposta corretta, non sono stato in grado di seguire le sue istruzioni.
user1933824

Sicuro. Sidenote: come ho già detto, $wpdb->prefixnon dovrebbe essere usato per le tabelle integrate. Chiamali direttamente. Risolto anche questo è la sua risposta.
Kaiser

1

Prova il seguente codice. Ho affrontato il problema simile e risolto rimuovendo $ wpdb dal campo 'DA'.

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

echo $result; // display data

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.