Cum să numeri numărul de înregistrări găsite într-un tabel din baza de date?
Sunt nou în dezvoltarea WordPress și încerc să învăț dezvoltarea de plugin-uri. Am creat un tabel personalizat din care vreau să afișez numărul de înregistrări găsite. Am încercat codul de mai jos dar acesta arată întotdeauna 1 ca rezultat, indiferent de numărul de rânduri din tabel.
//Pentru a afișa numărul de rânduri din tabel
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 . 'Rânduri Găsite';
}

De ce nu afișezi direct $num deoarece va conține deja numărul de rânduri... Iată partea editată..
//Pentru a afișa numărul de rânduri din tabel
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 . ' rânduri găsite';
}

METODA #1
Puteți utiliza metoda WordPress folosind clasa $wpdb
:
<?php
global $wpdb;
$table_name = $wpdb->prefix . 'mydata';
$my_query = $wpdb->get_results( "SELECT * FROM $table_name" );
echo $my_query->num_rows;
Codex spune:
Deoarece această funcție utilizează funcția
$wpdb->query()
, toate variabilele clasei sunt setate corespunzător. Numărul de rezultate pentru o interogare 'SELECT
' va fi stocat în$wpdb->num_rows
.
METODA #2
De asemenea, poate fi numărat în mod PHP. Utilizați pur și simplu interogarea generică și funcția 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;
Referință: http://php.net/manual/en/function.count.php
Deși este preferata mea, dar după cum spune @MarkKaplun:
există o diferență uriașă de performanță între numărarea dimensiunii unui array în PHP și lăsarea mysql să numere rândurile pentru tine. Este puțin probabil să o observi pe date mici, dar pentru tabele mari vei observa.
De aceea, aș prefera să rămân la metoda $wpdb
. <3

mulțumesc pentru răspunsul rapid, dar am 12 rânduri într-un tabel, iar primul cod afișează 0 ca rezultat & al doilea cod, care este metoda MySQL, afișează o avertizare mysql_num_rows() așteaptă ca parametrul 1 să fie resursă, s-a dat o matrice în /home/u168837564/public_html/wp-content/plugins/DB_Tables/DB_Tables.php la linia 136

există o diferență uriașă de performanță între numărarea dimensiunii unei matrice în PHP și lăsarea mysql să numere rândurile pentru tine. Este puțin probabil să o observi pe date mici, dar pentru tabele mari vei observa.

Mulțumesc @MarkKaplun, nu știam acest lucru. Și acum am postat răspunsul meu după o anumită căutare. Am avut noroc că a fost greșit prima dată, pentru că asta m-a determinat să învăț totul. Mulțumesc mult pentru comentariul tău.

@MayeenulIslam, nici o problemă ;) doar ca să menționez motivul pentru care există diferența, acesta este legat de costul găsirii și transferării informației din baza de date în codul PHP. Când interoghezi doar numărul de rânduri, există mult mai puțină suprasarcină de comunicare. (și, desigur, baza de date poate avea numărul de rânduri stocat în cache ca parte din structura sa de date, ceea ce înseamnă că necesită aproape zero efort pentru a-l găsi)
