wybierz count (*) z tabeli mysql w php


94

Jestem w stanie uzyskać zarówno wartość, jak i wiersz wyniku zapytania mysql.

Ale staram się uzyskać pojedynczy wynik zapytania. na przykład:

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

Potrzebuję wyniku do wyświetlenia. Ale rezultatu nie otrzymuję.

Próbowałem z następującymi metodami:

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

Ale nie udało mi się wyświetlić (pobrać) rzeczywistej wartości.


8
Do tej pory powinieneś używać PDO .
Lucio,

Odpowiedzi:


203

Musisz aliasować agregat za pomocą assłowa kluczowego, aby go wywołaćmysql_fetch_assoc

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

8
Po wersji 5.x to zapytanie nie będzie działać, wystarczy zastąpić mysql mysqli, aby działało.
ajay verma

32

Jeśli potrzebujesz tylko wartości:

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

2
echo mysql_result(mysql_query("SELECT count(*) from Students;"),0);zapisuje jedną niepotrzebną zmienną
Max Muster

Poprawny; moja odpowiedź była dopasowana do pytania.
bmaupin

4
@eichertc interpreter php ma zmienną zawsze wewnętrzną, ponieważ musi mieć wynik w pamięci w taki czy inny sposób. Więc twój sposób sprawia, że ​​kod jest trudniejszy do odczytania i utrzymania, IMHO.
Tom

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

Wypróbuj ten kod.


10

Zacznij korzystać z PDO.

mysql_ * jest przestarzałe w PHP 5.5.0 i zostanie całkowicie usunięte w 7. Ułatwmy aktualizację i zacznijmy go używać już teraz.

$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;

5

tutaj jest kod pokazujący liczbę wierszy w tabeli z PHP

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

Podoba mi się AStutaj, zamiast pisaćecho $data['count(*)'];
Typewar

2

Dla użytkowników mysqli kod będzie wyglądał następująco:

$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']);

lub:

$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];

po tylu godzinach znakomicie :)


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'];
  }     
 }

W tym oblicza liczbę wystąpień w kolumnie pytanie1, działa całkowicie


1

równie dobrze możesz z tego skorzystać i zaktualizować do mysqli_(przestań używać mysql_*rozszerzenia ...)

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

1

W przypadku mysql w wersji 5.7.20 udało mi się uzyskać liczbę wierszy z tabeli przy użyciu PHP w wersji 7.0.22:

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

Trzecia linia zwróci strukturę, która wygląda następująco:

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

W takim przypadku końcowa instrukcja echo zwróci:

1570

1

Myślę, że w Twoim kodzie jest literówka i powinieneś usunąć przedostatni średnik w:

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

1

Musisz aliasować agregat za pomocą assłowa kluczowego, aby go wywołaćmysqli_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>';

Wynik:

wprowadź opis obrazu tutaj


Jaka jest potrzeba linii 5? Kompilator / IDE powinien ostrzegać o nieużywanej zmiennej „$ data”.
ManuelJE

0

Myślę, że to lepsza odpowiedź.

$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;

0

niech ci się przyda:

$checkValid = "SELECT
                        COUNT(*) as total
                      FROM
                        ". $this->db_table ."
                      WHERE
                        UserName = ?";

      $stmt = $this->conn->prepare($sqlQuery);

      $stmt->bindParam(1, $this->UserName);

      $stmt->execute();

      $dataRow = $stmt->fetch(PDO::FETCH_ASSOC);

      $total = $dataRow["total"];

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

To również będzie w porządku, ale robi to, co zwraca wartość indeksu 0 przez przesunięcie tablicy pobierania. Witam wszystkich


-1

Z gamy opcji ta nie została wymieniona. Nawet jeśli nie jest to optymalne lub niepotrzebne, ale można to zrobić za pomocą prostej pętli:

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

To dlatego, że nie jest konieczne pisanie pętli. Nigdy nie wysyłaj odpowiedzi zawierających tylko kod. Każda odpowiedź zasługuje na wyjaśnienie - nawet jeśli jest prosta. Zwłaszcza na przeciążonych stronach, takich jak ta - powinieneś wyjaśnić przewagę swojej porady w porównaniu z innymi odpowiedziami.
mickmackusa

Uważam, że jeśli ta opcja działa, nawet jeśli nie jest optymalna pod pewnymi względami, może pomóc komuś rozwiązać problem. Jeśli chodzi o mnie, często znajduję odpowiedzi, a jeszcze częściej pomysły, które mi pasują, w odpowiedziach, które nie są oznaczone jako „najlepsza odpowiedź”. Czasami takie „dziwne rozwiązania” ujawniają logikę stojącą za pomysłem, który można wykorzystać. Dbać!
Portfel Yury

1
Miej trochę empatii dla naukowców, którzy próbują znaleźć najlepszą odpowiedź dla swojego projektu i nie mają czasu do stracenia. Badacze NIE chcą czytać 18 bardzo podobnych rozwiązań - chcą jak najszybciej znaleźć najlepszą odpowiedź. Nikt nie powinien już używać mysql_funkcji - nawet jeśli to stare pytanie używa ich. W moim IDE pojawiłaby się flaga informująca, że $numbmoże nie zostać zadeklarowana. Korzystanie z pętli zostało już wykonane przez PushkarPokharkar, ale znowu jest to niepotrzebne. Zrobię wszystko, co w mojej mocy, aby pomóc badaczom, odrzucając techniki, których nie polecam.
mickmackusa

1
To NIE jest osobisty atak na ciebie. To jest moja ocena jakości tego postu.
mickmackusa

-4

Jeśli chcesz tylko wartość zliczania, możesz zrobić skrót:

$cnt = mysql_num_rows(mysql_query('select * from students'));
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.