Come contare il numero di record trovati in una tabella del database?
Sono nuovo nello sviluppo WordPress e sto cercando di imparare lo sviluppo di plugin. Ho creato una tabella personalizzata dalla quale voglio mostrare il numero di record trovati. Ho provato il codice seguente ma mostra sempre 1 come risultato indipendentemente dal numero di righe nella tabella.
//Per mostrare il numero di righe nella tabella
function DB_Tables_Rows()
{
global $wpdb;
$table_name = $wpdb->prefix . 'mydata';
$count_query = "select count(*) from $table_name";
$num = $wpdb->get_var($count_query);
$num = $wpdb->num_rows;
echo $wpdb->num_rows . 'Righe Trovate';
}
Perché non mostri direttamente la variabile $num che già contiene il conteggio delle righe... Ecco la parte modificata..
// Per mostrare il numero di righe nella tabella
function DB_Tables_Rows()
{
global $wpdb;
$table_name = $wpdb->prefix . 'mydata';
$count_query = "select count(*) from $table_name";
$num = $wpdb->get_var($count_query);
echo $num . ' righe trovate';
}

METODO #1
Puoi utilizzare il metodo WordPress usando la classe $wpdb
:
<?php
global $wpdb;
$table_name = $wpdb->prefix . 'mydata';
$my_query = $wpdb->get_results( "SELECT * FROM $table_name" );
echo $my_query->num_rows;
Il codex afferma:
Poiché questa funzione utilizza la funzione
$wpdb->query()
tutte le variabili della classe sono impostate correttamente. Il conteggio dei risultati per una query 'SELECT
' sarà memorizzato in$wpdb->num_rows
.
METODO #2
Puoi anche contare utilizzando il metodo PHP. Basta usare la tua query generica e utilizzare la funzione PHP count()
.
<?php
global $wpdb;
$table_name = $wpdb->prefix . 'mydata';
$my_query = $wpdb->get_results( "SELECT * FROM $table_name" );
$num_rows = count( $my_query ); //PHP count()
echo $num_rows;
Riferimento: http://php.net/manual/en/function.count.php
Anche se è il mio preferito, come dice @MarkKaplun:
c'è un'enorme differenza di prestazioni tra contare la dimensione di un array in PHP e far contare le righe a mysql. È improbabile che tu lo noti su piccoli dati, ma per tabelle grandi sì.
Quindi preferisco anche io attenermi al metodo $wpdb
. <3

,grazie per la rapida risposta ma ho 12 righe in una tabella ma il primo codice mostra 0 come risultato & il secondo codice che è il modo MySQL mostra un avviso mysql_num_rows() expects parameter 1 to be resource, array given in /home/u168837564/public_html/wp-content/plugins/DB_Tables/DB_Tables.php on line 136

c'è una grande differenza di performance tra contare la dimensione di un array in PHP, e far contare le righe a mysql per te. È improbabile che tu lo noti su dati piccoli, ma per tabelle grandi lo noterai.

Grazie @MarkKaplun non ne ero a conoscenza. E ora ho pubblicato la mia risposta dopo alcune ricerche. Fortuna che la prima volta fosse sbagliato, perché questo mi ha spinto ad imparare tutto. Grazie mille per il tuo commento.

@MayeenulIslam, np ;) per scrivere semplicemente il motivo della differenza, è legato al costo di ricerca e trasferimento delle informazioni dal database al codice PHP. Quando esegui una query solo per il numero di righe c'è un overhead di comunicazione molto minore. (e ovviamente il database potrebbe avere il numero di righe già memorizzato nella cache come parte della sua struttura dati e quindi richiede quasi zero lavoro per trovarlo)
