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?
Verwenden Sie get_row()
in der Tat nur, wenn Sie ein Ergebnis erwarten, ansonsten können Sie get_results()
verwenden.
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.
$wpdb->get_row('query', output_type, row_offset);
row_offset (integer) Die gewünschte Zeile (0 ist die erste). Der Standardwert ist 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;
}
Benutzen:
<?php
echo count_results();