get_results using wpdb


12

Ich versuche, Informationen in meiner Datenbank abzurufen. Ich wollte alle pagesmit dieser Anweisung anzeigen , aber ich bekomme ein LeerzeichenARRAY

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

echo $result; // display data

Ausgabe:

  ARRAY

BEARBEITEN : Nachdem ich die folgenden Vorschläge geändert habe, verwende ich diese jetzt. aber ich bekomme immer noch keine Ergebnisse:

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

    }

Versuchen Sie, $wpdb->wp_postsmit geschweiften Klammern zu wickeln , dh. {$wpdb->wp_posts}..
— t31os

Antworten:


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

Hallo @balamurugan, ich habe deine Antwort versucht, aber ich bekomme immer noch keine Ergebnisse. Sie können meinen Teil Bearbeiten oben sehen.
— user1933824

Eigentlich was du bekommst und entfernst du ... aus meinem Code. Ich habe es getestet und alle Seiten-ID erhalten
— Balas

Ich benutze meinen Bearbeitungsteil wie oben in meinem ursprünglichen Beitrag gezeigt. Ich habe echo $resultnur versucht sicherzustellen, dass queryich Daten von dem, was ich bekomme, abrufe, ist Druck Array. Wenn ich benutze, echo $page->IDbekomme ich nichts.
— Ich bin

Sie kopieren diesen Code einfach und fügen ihn vollständig ein. Das ist alles, um das Ergebnis zu erzielen.
— Balas

Ja, es hat funktioniert! Wenn ich versuche, meinen und Ihren Code zu überprüfen, ist der einzige Unterschied, den ich gesehen habe, $tablename = $wpdb->prefix.'posts';dieser Teil, der nicht in der Codex-Dokumentation enthalten war. Kannst du mir erklären, warum es funktioniert?
— user1933824

3

Sie haben ein leichtes Missverständnis:

Beim Aufruf erhalten $wpdbSie eine Liste von Eigenschaften, die die Kernnamen der Tabellen enthalten:

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

So Ihre letzte Abfrage aussehen würde wie folgt aus :

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

1
+1 dafür, danke. aber ich musste der Person, die zuerst auf mich antwortete, Anerkennung zollen, er gab bereits die richtige Antwort, ich war einfach nicht in der Lage, seiner Anweisung zu folgen.
— user1933824

Sicher. Nebenbemerkung: Wie ich bereits sagte, $wpdb->prefixsollte das nicht für eingebaute Tabellen verwendet werden. Rufen Sie sie einfach direkt an. Behoben, dass dies auch seine Antwort ist.
— Kaiser

1

Versuchen Sie den folgenden Code. Ich habe mich dem ähnlichen Problem gestellt und es gelöst, indem ich $ wpdb aus dem Feld 'FROM' entfernt habe.

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

echo $result; // display data

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.