get_results en utilisant wpdb

12

J'essaie de récupérer des informations sur ma base de données. Je voulais afficher tout en pagesutilisant cette déclaration, mais je reçois un blancARRAY

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

echo $result; // display data

Production:

  ARRAY

EDIT : Après avoir modifié les suggestions ci-dessous, je l'utilise maintenant. mais je n'obtiens toujours aucun résultat:

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

    }
user1933824
la source
Essayez de vous envelopper $wpdb->wp_postsavec des accolades bouclées, par exemple. {$wpdb->wp_posts}..
t31os

Réponses:

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
la source
salut @balamurugan, j'ai essayé votre réponse mais je n'obtiens toujours aucun résultat. vous pouvez voir ma partie Modifier ci-dessus.
user1933824
en fait ce que vous obtenez et supprimez-vous ... de mon code. Je l'ai testé et obtenu toutes les identifiants de page
Balas
im en utilisant ma partie d' édition comme vu ci-dessus mon message d'origine. J'ai essayé echo $resultjuste de m'assurer que je récupère les données de ce queryque j'obtiens Array. quand j'utilise echo $page->IDje ne reçois rien. je ne sais vraiment pas pourquoi ..
user1933824
il vous suffit simplement de copier-coller ce code complètement. C'est tout ce qu'il faut faire pour obtenir le résultat.
Balas
oui ça a marché! quand j'essaye de passer en revue mon code et le vôtre, la seule différence que j'ai vue est cette partie $tablename = $wpdb->prefix.'posts';cette partie n'était pas dans la documentation du codex. pouvez-vous m'expliquer pourquoi cela fonctionne?
user1933824
3

Vous avez un léger malentendu:

Lors de l'appel $wpdb, vous obtenez une liste de propriétés qui contiennent les noms principaux des tables:

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

Donc, votre requête finale ressemblerait à ceci:

$wpdb->get_results( "SELECT * FROM {$wpdb->posts} WHERE post_type = 'page'" );
kaiser
la source
1
+1 pour cela, merci. mais je devais rendre hommage à la personne qui m'a répondu en premier, il a déjà fourni la bonne réponse, je n'étais tout simplement pas en mesure de suivre ses instructions.
user1933824
Sûr. Sidenote: Comme je l'ai dit, le $wpdb->prefixne devrait pas être utilisé pour les tables intégrées. Appelez-les directement. Correction de sa réponse également.
kaiser
1

Essayez le code suivant. J'ai fait face au problème similaire et l'ai résolu en supprimant $ wpdb du champ 'FROM'.

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

echo $result; // display data
Wahid Kadwaikar
la source