get_results usando wpdb

19 ago 2013, 16:10:56
Vistas: 175K
Votos: 19

Estoy tratando de recuperar información de mi base de datos. Quería mostrar todas las pages usando esta declaración, pero estoy obteniendo un ARRAY vacío

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

echo $result; // mostrar datos

Salida:

  ARRAY

EDICIÓN: Después de cambiar las sugerencias de abajo, ahora estoy usando esto, pero aún 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/>';

    }
1
Comentarios

Intenta envolver $wpdb->wp_posts con llaves, es decir, {$wpdb->wp_posts}.

t31os t31os
19 ago 2013 16:40:46
Todas las respuestas a la pregunta 4
6
30
global $wpdb;

// Obtener todos los resultados de la tabla de posts donde el tipo es 'page'
$result = $wpdb->get_results ( "
    SELECT * 
    FROM  $wpdb->posts
        WHERE post_type = 'page'
" );

// Recorrer cada página y mostrar su ID y título
foreach ( $result as $page )
{
   echo $page->ID.'<br/>';
   echo $page->post_title.'<br/>';
}
19 ago 2013 16:24:42
Comentarios

hola @balamurugan, probé tu respuesta pero todavía no obtengo ningún resultado. Puedes ver mi parte [EDIT] arriba.

user1933824 user1933824
19 ago 2013 16:34:03

en realidad qué estás obteniendo y ¿eliminaste los ... de mi código? Lo probé y obtengo todos los IDs de página

Balas Balas
19 ago 2013 16:45:03

estoy usando mi parte [edit] como se ve arriba de mi publicación original. Intenté echo $result solo para asegurarme de que estoy recuperando datos de la query, lo que obtengo es que imprime Array. Cuando uso echo $page->ID no obtengo nada. Realmente no estoy seguro por qué...

user1933824 user1933824
19 ago 2013 16:52:36

simplemente copias y pegas ese código completamente. Eso es todo lo que hay que hacer para obtener el resultado.

Balas Balas
19 ago 2013 16:55:16

¡sí, funcionó! cuando intenté revisar mi código y el tuyo, la única diferencia que vi es esta parte $tablename = $wpdb->prefix.'posts'; esta parte no estaba en la documentación del codex. ¿puedes explicarme por qué funciona?

user1933824 user1933824
19 ago 2013 16:59:04

$wpdb->prefix = wp_ (como en el prefijo de la tabla de la base de datos) que será como wp_posts en la base de datos. en el futuro puedes dar tu nombre como prefijo. para que no afecte este tipo de código. Y trata siempre de usar esta forma.

Balas Balas
19 ago 2013 17:02:39
Mostrar los 1 comentarios restantes
2

Tienes un pequeño malentendido:

Cuando llamas a $wpdb, obtienes una lista de propiedades que contienen los nombres principales de las tablas:

// El prefijo personalizado de wp-config.php
// solo se necesita para tablas personalizadas
$wpdb->prefix

// Tablas donde no necesitas un prefijo: las integradas:
$wpdb->posts
$wpdb->postmeta
$wpdb->users

Así que tu consulta final se vería algo así:

$wpdb->get_results( "SELECT * FROM {$wpdb->posts} WHERE post_type = 'page'" );
19 ago 2013 16:45:57
Comentarios

+1 por esto, gracias. Pero necesitaba dar crédito a la persona que me respondió primero, él ya proporcionó la respuesta correcta, simplemente no pude seguir sus instrucciones.

user1933824 user1933824
19 ago 2013 17:02:06

Claro. Nota al margen: Como mencioné, el $wpdb->prefix no debería usarse para tablas integradas. Simplemente llámalas directamente. Esto también está corregido en su respuesta.

kaiser kaiser
19 ago 2013 17:08:33
0

Prueba el siguiente código. Yo me encontré con un problema similar y lo resolví eliminando $wpdb del campo 'FROM'.

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

echo $result; // muestra los datos
16 jul 2014 03:46:41
0

Cuando dices "blank Array", ¿te refieres a un 'array vacío' o la salida es 'ARRAY'? Si es lo último, entonces esa es la salida esperada. Necesitas iterar sobre ese array y mostrar los resultados acorde.

Referencia: http://codex.wordpress.org/Class_Reference/wpdb#SELECT_Generic_Results

19 ago 2013 16:16:50