$ wpdb-> get_row () gibt nur eine einzelne Zeile zurück?


21

Warum ist es? Ich habe die gleiche Abfrage in der Konsole ausprobiert und es wurden mehrere Zeilen zurückgegeben. Hier ist die Abfrage:

$this->wpdb->get_row("SELECT * FROM ".$this->wpdb->users." WHERE status = 'active'", ARRAY_A);

Es wird immer dieselbe einzelne Zeile zurückgegeben, wenn mehrere aktive Benutzer vorhanden sind. Vermisse ich etwas?

Antworten:



40

Es gibt drei Möglichkeiten, Daten aus der Datenbank abzurufen.

1 $wpdb->get_var.: Verwenden Sie diese Option, um einen einzelnen Wert aus der Datenbanktabelle abzurufen. Zum Beispiel, wenn Sie die Gesamtzahl der Kommentare zählen möchten. Sie können es auf folgende Weise tun:

<?php 
$comment_count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $wpdb->comments;")); 
echo '<p>Total comments: ' . $comment_count . '</p>';
?>

2 $wpdb->get_row.: Um eine ganze Tabellenzeile abzurufen, können Sie diese verwenden.

Beispiel:

<?php 
$thepost = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = 1" ) );
echo $thepost->post_title; 
?>

ODER

<?php 
$thepost = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = 1" ), ARRAY_A );
print_r ($thepost); 
?>

Wenn Sie den ARRAY_AParameter in get_row verwenden, werden Ihre Post-Daten als assoziatives Array zurückgegeben. Alternativ können Sie den ARRAY_NParameter verwenden, um Ihre Post-Daten in einem numerisch indizierten Array zurückzugeben.

3 $wpdb->get_results.: Standardabfragen SELECTsollten die Funktion get_results zum Abrufen mehrerer Datenzeilen aus der Datenbank verwenden.

<?php 
global $wpdb;
$allposts = $wpdb->get_results( $wpdb->prepare("SELECT ID, post_title FROM $wpdb->posts WHERE post_status = 'publish'") );
foreach ($allposts as $singlepost) { 
         echo '<p>' .$singlepost->post_title. '</p>';
}
?>

und du brauchst den letzten, wie du erwarten kannst.


Wunderbare Detailbeispiele ..
Pixelngrain

Sicher! warum nicht ..
Pixelngrain


0

meine lösung ist einfach ..

<?php
function count_results() {
    # use the data base
    global $wpdb;

    # Query to count all results from one table
    $sql_count_results = '
        SELECT count(*) as count
        FROM `YOUR_TABLE`;';

    # Ejecute function
    $results = $wpdb->get_row( $sql_count_results , OBJECT );

    # Return results
    return $results->count;
}

Verwenden:

<?php
echo count_results();

4
Es wäre großartig, wenn Sie erklären könnten, was dieser Code zusätzlich zum Posten tut.
Bravokeyl

Dies zählt die Zeilen in einer Tabelle, es ist keine Antwort auf die Frage des OP.
Alexg
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.