2011-07-11 12 views
20

Jakie jest najlepsze polecenie MySQL do zliczania całkowitej liczby wierszy w tabeli bez żadnych warunków? Robię to przez php, więc może jest tam funkcja php, która robi to dla mnie? Nie wiem Oto przykład mojego php:MySQL - zlicza całkowitą liczbę wierszy w 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); 
?> 

Odpowiedz

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

A co powiesz na PHP 5.3? – User

+0

to nie działa poprawnie z LIMIT w zapytaniu - ta metoda zwraca rzeczywistą liczbę tablic –

6

Zastosowanie COUNT w SELECT zapytania.

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

i jak mogę odczytać tę wartość? – CodeGuy

+0

Użyj ['mysql_result'] (http://php.net/manual/en/function.mysql-result.php) (najlepiej dla tej instancji, IMHO) lub jednej z podobnych funkcji do pobierania danych z zestawów wyników. –

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

, a następnie w jaki sposób mogę odczytać tę wartość? – CodeGuy

11

Albo użycie COUNT w zapytaniu MySQL czy SELECT * FROM tabela i zrobić:

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

Twoja pierwsza część jest poprawna. Wyślę ostatnią część, cofając cały zestaw danych. W tym zakresie pytań jest to marnowanie zasobów na prostą liczbę. –

+0

@George Nie sugerowałbym używania go również. Ale kiedy zapytał, czy istnieje jakaś funkcja PHP, która mogłaby to zrobić, po prostu udostępniłem tę opcję. Odpowiadając na pytanie, nie jestem tutaj, aby nauczyć go programowania. – Jules

+1

To dobrze, jednak zawsze dobrze jest wskazać potencjalne problemy, takie jak to, gdy odpowiadasz na pytanie. Nie tylko pomaga użytkownikowi zrozumieć różnice, zwiększa zasadność odpowiedzi i zwraca na nią uwagę. Co znaczy, więcej punktów dla ciebie! :) –

7

można to zrobić tylko w jednej linii, jak poniżej:

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

Dlaczego piszesz tę odpowiedź, kiedy jest zaakceptowana odpowiedź? I to pytanie zostało zadane w 2011 roku. – Yang

+4

Chcę pokazać, że można to zrobić w ramach jednej linii ... – Shridhar

+1

... używając przestarzałej biblioteki (mysql). używaj mysqli zamiast – Pascamel

2

dla PHP 5.3 przy użyciu PDO

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


    echo $staffcount; 
?> 
+0

Dobry dodatek. Małe ulepszenie: Jeśli użyjesz '$ staffcount = $ staff-> fetchColumn() ;, możesz pozbyć się zmiennej tymczasowej' $ staffrow'. – Boldewyn

+0

dziękuję niezłą sugestię. –

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); 
?> 

Nadal masz problem, odwiedź mnie w tutorialu 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); 
?> 

Jest to najlepszy sposób (myślę), aby uzyskać liczbę specjalnego rzędu w mysql z php.

+0

Ta technika została już odebrana. Dlaczego "specjalne rzędy"? Są to po prostu wiersze wyników zapytania. – progmatico

Powiązane problemy