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.