Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] zliczanie rekordow
Forum PHP.pl > Forum > Przedszkole
lukash82
Witam. Mam takie trywialne pytanko. Jakim poleceniem moge zliczyc ile mam rekordow w danej kolmnie w bazie. Kolumna jest auto_increment. Robilem juz cos takiego:
  1. "select MAX(numer_n) FROM news";

i takiego
  1. "select distinct count(numer_n) from news";

gdzie news to nazwa tabeli a numer_n nazwa danej kolumny w tej tabeli w ktroej chce znac ile ma rekordow w danej chwili automatycznie wpisanych. Prosze o jakas podpowiedz bo nie moge sobie z tym jakos poradzic:/ Pozdrawiam
mdco
Nio, i ta druga opcja z COUNT nie działa?
Gość
Musi zadzialac ta druga:
SELECT COUNT(nazwa_kolumny) FROM nazwa_tabeli;
lukash82
No wlasnie nie dziala:/ Wywala tylko Resource id #3 a powinno pokazac 8 bo tyle narazie mam rekordow. No chyba, ze cos dalej z tym zle robie, mam tak:
  1. <?php
  2. $query = "select count(numer_n) from news"; 
  3. $results = mysql_query($query) or die(mysql_error());
  4. echo $results;
  5. ?>
skowron-line
to moze skoro uzywasz php to looknij na funkcje mysql_num_rows taka moja rada
  1. <?php
  2. $query = mysql_query('SELECT login FROM users');
  3. $ile = mysql_num_rows($query);
  4. echo $ile;
  5. ?>
Gość
mysql_query zwraca resource (nie wiem jak to po polsku przetlumaczyc) do odpowiedzi bazy danych na pytanie. Tak jak kolega wyzej napisal - uzyj mysql_num_rows.
lukash82
Ok, to zrobilem cos takiego:
  1. <?php
  2. $query = "select count(numer_n) from news";
  3. $results = mysql_query($query) or die(mysql_error());
  4. $results2 = mysql_num_rows($results) or die(mysql_error());
  5. echo $results2;
  6. ?>

ale to mi zwraca 1 tylko. Chyba cos tu przekombinowalem:/
skowron-line
no przekombinowales
zrob tak
  1. <?php
  2. $query = mysql_query('SELECT login FROM news');
  3. $ile = mysql_num_rows($query);
  4. echo $ile;
  5. ?>


i tyle bez zbednego kombinowania nie robisz zliczana przez counta w zapytaniu tylko wyswietlasz liczbe zwracanych rekordow przez selecta.

->ale zakrecilem<-
Gość
Teraz to musisz inne pytanie zadac smile.gif
Ahhh..... ok, napisze ci:
Albo tak:
  1. <?php
  2. $query = "select numer_n from news";
  3. $results = mysql_query($query) or die(mysql_error());
  4. $results2 = mysql_num_rows($results) or die(mysql_error());
  5. echo $results2;
  6. ?>

albo:
  1. <?php
  2. $query = "select count(numer_n) from news";
  3. $results = mysql_query($query) or die(mysql_error());
  4. $results2 = mysql_fetch_array($results); 
  5. echo $results2['count(numer_n)'];
  6. ?>

Co do drugiego to nie jestem na 100% pewien w jakiej formie trzeba wpisac indeks tablicy w $result2, ale jak wezmiesz print_r ($result2) to sie dowiesz, jezeli to nie bedzie dzialalo.
piotrekkr
mozna jeszcze tak
  1. <?php
  2. $query='SELECT COUNT(`numer_n`) FROM `news`';
  3. $result=mysql_query($query);
  4. $result=mysql_fetch_row($result);
  5. echo $result[0];
  6. ?>
lukash82
Oki, dziala:) Zrobilem tak jak napisal skowron-line ale dzieki wszystkim za pomoc. Pozdrawiam
nospor
Cytat
Zrobilem tak jak napisal skowron-line

To żes bardzo źle zrobil. Metoda skowrona poniera wszystkie rekordy z bazy i potem zwraca ich liczbe. I teraz pytanie: tobie chodzilo tylko o liczbe? Jesli tak to pomysl sobie. W bazie masz 1000 000 rekordow i w celu pobrania ich liczby ty pobierasz wszystkie. Do pobrania liczby sluzy wlasnie count() ktora tak ci skowron odradzal. Przeciez lepiej, by to co mogla robic baza, niech zrobi ona i niech nam zwroci tylko to co potrzebujemy bez zbednych informacji.
A jak uzyc tego count to w tym topicu juz licznie zostalo podane
SongoQ
@nospor Nie nieraz sie zdazaja tacy co to polecaja. Przekonaja sie na wiekszych bazach. (hehehe co tam 1BG danych tez mozna przeslac tongue.gif).

A tak na powaznie to jeden z najczestrzych bledow. Polecam stosowanie count(*) dla ilosci rekordow albo count(pole) gdzie pole jest to PK.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.