$wpdb->get_row() returnează doar un singur rând?
De ce se întâmplă asta? Am încercat aceeași interogare în consolă și a returnat mai multe rânduri. Iată interogarea:
$this->wpdb->get_row("SELECT * FROM ".$this->wpdb->users." WHERE status = 'active'", ARRAY_A);
Continuă să returneze același rând unic când există mai mulți utilizatori activi. Am omis ceva?

Pentru referință, consultă https://developer.wordpress.org/reference/classes/wpdb/get_row/ și https://developer.wordpress.org/reference/classes/wpdb/get_results/

Există trei metode de a extrage date din baza de date.
1. $wpdb->get_var
: folosește această metodă pentru a obține o singură valoare din tabela bazei de date. De exemplu, dacă dorești să numeri totalul de comentarii. Poți face asta în felul următor:
<?php
$comment_count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $wpdb->comments;"));
echo '<p>Comentarii totale: ' . $comment_count . '</p>';
?>
2. $wpdb->get_row
: Pentru a prelua un întreg rând din tabelă poți folosi această metodă.
Exemplu:
<?php
$thepost = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = 1" ) );
echo $thepost->post_title;
?>
SAU
<?php
$thepost = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = 1" ), ARRAY_A );
print_r ($thepost);
?>
Folosind parametrul ARRAY_A
în get_row
, datele postării vor fi returnate ca un array asociativ. Alternativ, poți folosi parametrul ARRAY_N
pentru a returna datele postării ca un array indexat numeric.
3. $wpdb->get_results
: Interogările standard SELECT
ar trebui să folosească funcția get_results
pentru a prelua mai multe rânduri de date din baza de date.
<?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>';
}
?>
și vei avea nevoie de ultima metodă, după cum probabil îți dai seama.

$wpdb->get_row('query', output_type, row_offset);
row_offset (integer) Rândul dorit (0 fiind primul). Implicit este 0.

soluția mea este simplă..
<?php
function count_results() {
# folosește baza de date
global $wpdb;
# Interogare pentru a număra toate rezultatele dintr-un tabel
$sql_count_results = '
SELECT count(*) as count
FROM `YOUR_TABLE`;';
# Execută funcția
$results = $wpdb->get_row( $sql_count_results , OBJECT );
# Returnează rezultatele
return $results->count;
}
Utilizare:
<?php
echo count_results();
