get_results usando wpdb

12

Estoy tratando de recuperar información en mi base de datos. Quería mostrar todo pagesusando esta declaración, pero estoy obteniendo un espacio en blancoARRAY

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

echo $result; // display data

Salida:

  ARRAY

EDITAR : después de cambiar las sugerencias a continuación, ahora estoy usando esto. pero todavía no obtengo ningún resultado:

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

    }
usuario1933824
fuente
Intente envolver $wpdb->wp_postscon llaves, es decir. {$wpdb->wp_posts}..
t31os

Respuestas:

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/>';
}
Balas
fuente
hola @balamurugan, probé tu respuesta pero aún no obtengo ningún resultado. puedes ver mi parte Editar arriba.
user1933824
en realidad lo que estás obteniendo y eliminas ... de mi código. lo probé y obtuve toda la identificación de la página
Balas
Estoy usando mi parte de edición como se ve arriba de mi publicación original. Traté echo $resultde asegurarme de que estoy recuperando datos de querylo que obtengo es imprimir Array. cuando uso echo $page->IDno obtengo nada. Realmente no estoy seguro de por qué ..
user1933824
simplemente copie y pegue ese código por completo. Eso es todo para obtener el resultado.
Balas
sí, funcionó! Cuando trato de revisar mi código y el tuyo, la única diferencia que vi es que $tablename = $wpdb->prefix.'posts';esta parte no estaba en la documentación del Codex. ¿Puedes explicarme por qué funciona?
user1933824
3

Tienes un ligero malentendido:

Al llamar $wpdb, obtiene una lista de propiedades que contienen los nombres principales de las tablas:

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

Entonces su consulta final se vería así :

$wpdb->get_results( "SELECT * FROM {$wpdb->posts} WHERE post_type = 'page'" );
emperador
fuente
1
+1 por esto, gracias. pero necesitaba darle crédito a la persona que me respondió primero, él ya me dio la respuesta correcta, simplemente no pude seguir sus instrucciones.
user1933824
Por supuesto. Nota al margen: como dije, $wpdb->prefixno debería usarse para tablas integradas. Solo llámalos directamente. Corregido, esta es su respuesta también.
kaiser
1

Prueba el siguiente código. Me enfrenté al problema similar y lo resolví eliminando $ wpdb del campo 'DESDE'.

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

echo $result; // display data
Wahid Kadwaikar
fuente