Autor Zpráva
jamil
Profil *
Ahoj, chtěl bych se zeptat jak mám kombinovat select a select count... když mám třeba tohle select * from user; a zároveň bych potřeboval vědět kolik těch řádků mi to vypsalo. zkoušel jsem toho už dost ale nic nedělá to co potřebuju. Děkuji.
mimochodec
Profil
$qry = "SELECT * FROM table";
$res = mysql_query($qry);
$cnt = mysql_num_rows($res);

echo "řádků: ".$cnt;
if ($cnt > 0 ) {
  while ($row=MySQL_Fetch_Array($res)):
    echo $row["ID"];
  endwhile;
};
jamil
Profil *
aha děkuji... já myslel že bych to měl udělat rovnou v sql něco jako SELECT *, COUNT(*) AS pocet FROM uzivatele; ale jestli se to dělá takhle tak dík :o)


...protože tahle stejně tu databázi oslovim dvakrát ne? tomu jsem se chtěl vyhnout právě.
mimochodec
Profil
jamil:
já myslel že bych to měl udělat rovnou v sql něco jako SELECT *, COUNT

To můžeš, ale nevím přesně jak a hlavně nevím proč.

protože tahle stejně tu databázi oslovim dvakrát ne?

Ne.
pcmanik
Profil
jamil:
Praveze nie, teraz uz php spocita dane riadky ktore boli vratene databazou.

// Mimochodec ma prebehol :)
jamil
Profil *
tak já taky nevim přesně proč... nechtěl jsem jí zatěžovat a oslovovat dvakrát ne?


pcmanik:
ahaaa :o) tak díky :o)
Alphard
Profil
jamil:
Pletete si to zřejmě se situací, kdy se dělá třeba stránkování a reálně se vrátí jen např. 20 řádků z tisíců. Pak je vhodná chvíle použít druhý dotaz count(*) (jsou i jiné možnosti, ale tohle je nejběžnější).
Joker
Profil
jamil:
Ještě pro jistotu dodám, že právě v situaci, kdy potřebujete načíst nějaké záznamy z databáze a zároveň vědět, kolik těch záznamů se vybralo, je vhodné použít mysql_num_rows.
Naopak v situaci, kdy nepotřebujete data těch záznamů, ale pouze vědět jejich počet, je lepší použít SQL a SELECT COUNT dotaz, než ty záznamy vybrat a pak použít mysql_num_rows.
MartinR
Profil
pokud nechces dva dotazy do db, tak to spocitej primo v php (myslim ze o to ti jde) .. count($res) .. a nebo primo jak pises v dotazu SELECT *, count(nazev_sloupce) FROM xxx

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0