¿Cómo contar el número de registros encontrados en una tabla de base de datos?
Soy nuevo en el desarrollo de WordPress y estoy tratando de aprender desarrollo de plugins. He creado una tabla personalizada de la cual quiero mostrar el número de registros encontrados. He intentado el siguiente código pero siempre muestra 1 como resultado independientemente del número de filas en la tabla.
//Para mostrar el número de filas en la tabla
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 . 'Filas Encontradas';
}

¿Por qué no muestras directamente el $num ya que contendrá el conteo de filas?... Aquí está la parte editada..
//Para mostrar el número de filas en la tabla
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 . ' Filas Encontradas';
}

MÉTODO #1
Puedes usar la forma de WordPress utilizando la clase $wpdb
:
<?php
global $wpdb;
$table_name = $wpdb->prefix . 'mydata';
$my_query = $wpdb->get_results( "SELECT * FROM $table_name" );
echo $my_query->num_rows;
El codex dice:
Dado que esta función utiliza la función
$wpdb->query()
, todas las variables de la clase se configuran correctamente. El conteo de resultados para una consulta 'SELECT
' se almacenará en$wpdb->num_rows
.
MÉTODO #2
También se puede contar mediante PHP. Solo usa tu consulta genérica y utiliza la función count()
de PHP.
<?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;
Referencia: http://php.net/manual/es/function.count.php
Aunque es mi favorito, como dice @MarkKaplun:
hay una gran diferencia de rendimiento entre contar el tamaño de un array en PHP y dejar que mysql cuente las filas por ti. Es poco probable que lo notes en datos pequeños, pero para tablas grandes sí lo notarás.
Así que yo también preferiría quedarme con el método $wpdb
. <3

,gracias por la rápida respuesta, pero tengo 12 filas en una tabla pero el primer código muestra 0 como resultado y el segundo código que es la forma MySQL muestra una advertencia: 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

hay una gran diferencia de rendimiento entre contar el tamaño de un array en PHP y dejar que MySQL cuente las filas por ti. Es poco probable que lo notes en datos pequeños, pero para tablas grandes sí lo harás.

Gracias @MarkKaplun, no estaba al tanto de eso. Y ahora publiqué mi respuesta después de investigar un poco. Tuve suerte de que estuviera mal la primera vez, porque eso me motivó a aprender todo. Muchas gracias por tu comentario.

@MayeenulIslam, np ;) solo para anotar la razón por la que hay una diferencia, está relacionada con el costo de encontrar y transferir la información desde la base de datos al código PHP. Cuando consultas solo el número de filas, hay mucha menos sobrecarga de comunicación. (y por supuesto, la base de datos podría tener el número de filas en caché como parte de su estructura de datos, por lo que requiere casi cero trabajo encontrarlo)
