2011-07-11 21 views
20

¿Cuál es el mejor comando de MySQL para contar el número total de filas en una tabla sin aplicar ninguna condición? Estoy haciendo esto a través de php, ¿entonces tal vez hay una función php que hace esto por mí? No lo sé. He aquí un ejemplo de mi php:MySQL - cuenta el número total de filas en php

<?php 
$con = mysql_connect("server.com","user","pswd"); 
if (!$con) { 
    die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("db", $con); 

$result = mysql_query("some command"); 
$row = mysql_fetch_array($result); 

mysql_close($con); 
?> 

Respuesta

36
<?php 
$con = mysql_connect("server.com","user","pswd"); 
if (!$con) { 
    die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("db", $con); 

$result = mysql_query("select count(1) FROM table"); 
$row = mysql_fetch_array($result); 

$total = $row[0]; 
echo "Total rows: " . $total; 

mysql_close($con); 
?> 
+0

¿Qué tal en PHP 5.3? – User

+0

no funciona correctamente con LIMIT en la consulta - este método devuelve el recuento real de la matriz –

6

Uso COUNT en una consulta SELECT.

$result = mysql_query('SELECT COUNT(1) FROM table'); 
$num_rows = mysql_result($result, 0, 0); 
+0

y luego ¿cómo leo ese valor? – CodeGuy

+0

Utilice ['mysql_result'] (http://php.net/manual/en/function.mysql-result.php) (lo mejor para esta instancia, en mi humilde opinión) o una de las funciones similares para obtener datos de los conjuntos de resultados. –

0
$sql = "select count(column_name) as count from table"; 
+0

y luego ¿cómo leo ese valor? – CodeGuy

11

De cualquier Número de usos de la consulta MySQL o hacer un SELECT * FROM tabla y hacer:

$result = mysql_query("SELECT * FROM table"); 
$rows = mysql_num_rows($result); 
echo "There are " . $rows . " rows in my table."; 
+1

Tu primera parte es correcta. Yo emitiría la última parte retirando todo el conjunto de datos. En este ámbito de preguntas, es un desperdicio de recursos para un conteo simple. –

+0

@George No sugeriría usarlo tampoco. Pero cuando me preguntó si había alguna función de PHP que pudiera hacerlo, simplemente compartí la opción. Solo respondiendo la pregunta, no estoy aquí para enseñarle a programar. – Jules

+1

Y eso está bien, sin embargo, siempre es bueno señalar posibles problemas como este cuando respondes una pregunta. No solo ayuda al usuario a entender las diferencias, sino que aumenta la legitimidad de su respuesta y la atención que recibe. Lo que significa, más puntos para ti! :) –

7

puede hacerlo sólo en una línea de la siguiente manera:

$cnt = mysql_num_rows(mysql_query("SELECT COUNT(1) FROM TABLE")); 
echo $cnt; 
+0

¿Por qué está escribiendo esta respuesta, cuando hay una respuesta aceptada? Y esta pregunta se ha formulado en 2011. – Yang

+4

Quiero mostrar que incluso se puede hacer dentro de una línea ... – Shridhar

+1

... utilizando una biblioteca en desuso (mysql). use mysqli en su lugar – Pascamel

2

para PHP 5.3 utilizando PDO

<?php 
    $staff=$dbh->prepare("SELECT count(*) FROM staff_login"); 
    $staff->execute(); 
    $staffrow = $staff->fetch(PDO::FETCH_NUM); 
    $staffcount = $staffrow[0]; 


    echo $staffcount; 
?> 
+0

Buena adición. Una pequeña mejora: si usa '$ staffcount = $ staff-> fetchColumn();' puede deshacerse de la variable temporal '$ staffrow'. – Boldewyn

+0

gracias agradable sugerencia. –

1
<?php 
$conn=mysqli_connect("127.0.0.1:3306","root","","admin"); 
// Check connection 
if (mysqli_connect_errno()) 
{ 
echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
$sql="select count('user_id') from login_user"; 
$result=mysqli_query($conn,$sql); 
$row=mysqli_fetch_array($result); 
echo "$row[0]"; 
mysqli_close($conn); 
?> 

Todavía tiene un problema visitar mi tutorial http://www.studentstutorial.com/php/php-count-rows.php

0
<?php 
$con=mysqli_connect("localhost","my_user","my_password","my_db"); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

$sql="SELECT Lastname,Age FROM Persons ORDER BY Lastname"; 

if ($result=mysqli_query($con,$sql)) 
    { 
    // Return the number of rows in result set 
    $rowcount=mysqli_num_rows($result); 
    echo "number of rows: ",$rowcount; 
    // Free result set 
    mysqli_free_result($result); 
    } 

mysqli_close($con); 
?> 

es mejor manera (creo) para obtener el número de la fila especial en MySQL con PHP.

+0

Esta técnica ya ha sido respondida. ¿Por qué "filas especiales"? Solo son filas de resultados de consulta. – progmatico

Cuestiones relacionadas