it-swarm.com.de

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

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?

21
Joann

Verwenden Sie get_row() in der Tat nur, wenn Sie ein Ergebnis erwarten, ansonsten können Sie get_results() verwenden.

35

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

1 .$wpdb->get_var: Verwenden Sie diesen Befehl, 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: Zum Abrufen einer gesamten Tabellenzeile können Sie diese verwenden.

Beispiel:

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

OR

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

Mit dem Parameter ARRAY_A in get_row werden Ihre Post-Daten als assoziatives Array zurückgegeben. Alternativ können Sie den Parameter ARRAY_N verwenden, um Ihre Post-Daten in einem numerisch indizierten Array zurückzugeben.

3 .$wpdb->get_results: Standardabfragen für SELECT sollten die Funktion get_results verwenden, um mehrere Datenzeilen aus der Datenbank abzurufen.

<?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 Sie brauchen die letzte, wie Sie erwarten können.

39
enam
$wpdb->get_row('query', output_type, row_offset);

row_offset (integer) Die gewünschte Zeile (0 ist die erste). Der Standardwert ist 0.

va http://codex.wordpress.org/Class_Reference/wpdb

1
test

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

Benutzen:

<?php
echo count_results();
0
Bryan Contreras