seleccione count (*) de la tabla de mysql en php


93

Puedo obtener tanto el valor como la fila del resultado de la consulta de mysql.

Pero estoy luchando por obtener el resultado único de una consulta. p.ej:

$result = mysql_query("SELECT COUNT(*) FROM Students;");

Necesito que se muestre el resultado. Pero no obtengo el resultado.

Lo he probado con los siguientes métodos:

  1. mysql_fetch_assoc()
  2. mysql_free_result()
  3. mysql_fetch_row()

Pero no logré mostrar (obtener) el valor real.


8
A estas alturas debería estar usando PDO .
Lucio

Respuestas:


202

Debe asignar un alias al agregado utilizando la aspalabra clave para llamarlo desdemysql_fetch_assoc

$result=mysql_query("SELECT count(*) as total from Students");
$data=mysql_fetch_assoc($result);
echo $data['total'];

7
Después de la versión 5.x, esta consulta no funcionará, simplemente reemplace mysql con mysqli para que funcione.
ajay verma

32

Si solo necesita el valor:

$result = mysql_query("SELECT count(*) from Students;");
echo mysql_result($result, 0);

2
echo mysql_result(mysql_query("SELECT count(*) from Students;"),0);está guardando una variable innecesaria
Max Muster

Correcto; mi respuesta se adaptó a la pregunta.
bmaupin

4
@eichertc el intérprete php tiene la variable siempre interna, ya que necesita tener el resultado en la memoria de una forma u otra. Entonces, su manera solo hace que el código sea más difícil de leer y mantener, en mi humilde opinión.
Tom

15
$result = mysql_query("SELECT COUNT(*) AS `count` FROM `Students`");
$row = mysql_fetch_assoc($result);
$count = $row['count'];

Prueba este código.


10

Empiece a utilizar PDO.

mysql_ * está obsoleto a partir de PHP 5.5.0 y se eliminará por completo en 7. Facilitemos la actualización y comencemos a usarlo ahora.

$dbh = new \PDO($dsn, $user, $password);
$sth = $dbh->prepare('SELECT count(*) as total from Students');
$sth->execute();
print_r($sth->fetchAll());

6
$num_result = mysql_query("SELECT count(*) as total_count from Students ") or exit(mysql_error());
$row = mysql_fetch_object($num_result);
echo $row->total_count;

4

aquí está el código para mostrar el número de filas en la tabla con PHP

$sql="select count(*) as total from student_table";
$result=mysqli_query($con,$sql);
$data=mysqli_fetch_assoc($result);
echo $data['total'];

Me gusta el uso de ASaquí, en lugar de tener que escribirecho $data['count(*)'];
Typewar

2

Para los usuarios de mysqli, el código se verá así:

$mysqli = new mysqli($db_host, $db_user, $db_pass, $db_name);

$result = $mysqli->query("SELECT COUNT(*) AS Students_count FROM Students")->fetch_array();
var_dump($result['Students_count']);

o:

$mysqli = new mysqli($db_host, $db_user, $db_pass, $db_name);

$result = $mysqli->query("SELECT COUNT(*) FROM Students")->fetch_array();
var_dump($result[0]);

1
 $howmanyuser_query=$conn->query('SELECT COUNT(uno)  FROM userentry;');
 $howmanyuser=$howmanyuser_query->fetch_array(MYSQLI_NUM); 
 echo $howmanyuser[0];

después de tantas horas excelente :)


1
$abc="SELECT count(*) as c FROM output WHERE question1=4";
$result=mysqli_query($conn,$abc);
if($result)
 {
    while($row=mysqli_fetch_assoc($result))
  {
        echo $row['c'];
  }     
 }

En este su recuento el número de ocurrencias en la columna question1, su trabajo completamente


1

también puede usar esto y actualizar a mysqli_(dejar de usar la mysql_*extensión ...)

$result = mysqli_query($conn, "SELECT COUNT(*) AS `count` FROM `Students`");
$row = mysqli_fetch_array($result);
$count = $row['count'];
echo'$count';

1

Con mysql v5.7.20, así es como pude obtener el recuento de filas de una tabla usando PHP v7.0.22:

$query = "select count(*) from bigtable";
$qresult = mysqli_query($this->conn, $query);
$row = mysqli_fetch_assoc($qresult);
$count = $row["count(*)"];
echo $count;

La tercera línea devolverá una estructura que se ve así:

array(1) {
   ["count(*)"]=>string(4) "1570"
}

En cuyo caso, la declaración de eco final devolverá:

1570

1

Creo que hay un error tipográfico en su código y debe eliminar el penúltimo punto y coma en:

$result = mysql_query("SELECT COUNT(*) FROM Students;");

1

Debe asignar un alias al agregado utilizando la aspalabra clave para llamarlo desdemysqli_fetch_assoc

$result=mysqli_query($conn,"SELECT count(*) as total from Students");
$data=mysqli_fetch_assoc($result);
echo $data['total'];

1
$db  = new PDO('mysql:host=localhost;dbname=java_db', 'root', '') or die(mysql_errno());
$Sql = "SELECT count(*) as 'total' FROM users";
$stmt = $db->query($Sql);
$stmt->execute();
$data = array();
$total = $stmt->fetch(PDO::FETCH_ASSOC);
print '<pre>';
print_r($total);
print '</pre>';

Resultado:

ingrese la descripción de la imagen aquí


0

Creo que es una mejor respuesta.

$query = "SELECT count(*) AS total FROM table_name"; 
mysql_select_db('database_name');
$result = mysql_query($query); 
$values = mysql_fetch_assoc($result); 
$num_rows = $values['total']; 
echo $num_rows;

-1
$qry_appr = "SELECT COUNT(*) FROM comments WHERE admin_panel_id ='$id' AND status = 'ON'";
$qry_data = mysqli_query($con, $qry_appr);
$approve_count = mysqli_fetch_array($qry_data);
$toatalCount = array_shift($approve_count);
echo $toatalCount;

Esto también estará bien, pero esto es lo que devuelve el valor de índice 0 al cambiar la matriz de recuperación. todos bienvenidos


-1

Fuera de la gama de opciones, esta no fue mencionada. Incluso si no es óptimo o innecesario, pero se puede hacer con un simple bucle:

$result=mysqli_query($conn, "SELECT count(1) as total from Students");
foreach ($result as $rez) {$numb=$rez['total'];}
echo $numb;

Eso es porque no es necesario escribir un bucle. Nunca publique respuestas de solo código. Cada respuesta merece ser explicada, incluso si es simple. Especialmente en páginas sobrecargadas como esta, debe explicar la ventaja de su consejo frente a otras respuestas.
mickmackusa

Creo que si esta opción funciona incluso si no es óptima en algunos términos, puede ayudar a alguien a resolver su problema. En cuanto a mí, a menudo encuentro respuestas e incluso más a menudo ideas que funcionan para mí en las respuestas que no están marcadas como 'mejor respuesta'. Y, a veces, estas "soluciones extrañas" revelan la lógica detrás de la idea, que podría explotarse. ¡Cuídate!
Yury Wallet

1
Tenga cierta empatía por los investigadores que están tratando de determinar la mejor respuesta para su proyecto y no tienen tiempo que perder. Los investigadores NO quieren leer 18 soluciones muy similares; quieren encontrar la mejor respuesta lo más rápido posible. Nadie debería usar mysql_más funciones, incluso si esta vieja pregunta lo está usando. En mi IDE, habría una bandera que indica que $numbpodría no declararse. PushkarPokharkar ya hizo el uso de un bucle, pero nuevamente es innecesario. Haré mi parte para ayudar a los investigadores al rechazar técnicas que no recomiendo.
mickmackusa

1
Esto NO es un ataque personal contra ti. Este es mi juicio sobre la calidad de esta publicación.
mickmackusa

-4

Si solo desea el valor de recuento, puede hacer taquigrafía:

$cnt = mysql_num_rows(mysql_query('select * from students'));
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.