$ 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?

Joann
quelle

Antworten:

38

Verwenden Sie get_row()nur, wenn Sie ein Ergebnis erwarten, sonst können Sie es verwendenget_results()

Javier Villanueva
quelle
2
Informationen
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.

Email
quelle
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();
Bryan Contreras
quelle
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