Newsgroup: it.comp.www.php
Titolo: Funzione COUNT

Salve, sto cercando di realizzare uno script in PHP che mi conti il numero
di record in una tavola mySQL e mi stampi il valore ottenuto.
Solitamente quando ho la necessità di sapere il numero di record uso :
select count(*) from tavola
e ho provato di conseguenza a fare uno script PHP:
<?
$db = mysql_connect("localhost", "username", "password");
mysql_select_db("database", $db);
$sql = "select COUNT(*) from links";
$result = mysql_query($sql);
printf("%s\n", $result);
?>
ma non ottengo nulla, ovvero ciò che mi viene stampato a schermo è:
Resource id #2
non so più dove mettere le mani :(
Nella speranza che possiate aiutarmi ringrazio tutto il NG.
Grazie


Infatti tu fai stampare il resultset e non il valore voluto, per questo
viene visto a video un valore intero, cioe Resource id #2, se vuoi vedere il
numero di row devi usare in questo caso
$num_rows = mysql_result($result,0);
In num_rows avrai il valore voluto, consiglio ti guardarti anche
mysql_fetch_array,mysql_fetch_row, ecc...., cioe' tutte quelle funzioni che
lavorano con il tuo resultset.
Ciao


Oltre a tutto ricordati poi di "liberare" il resultset con una
 mysql_free_result($result_set);
precedentemente ho lavorato su un progetto che richiedeva query "massiccie"
con grande dispendio di mem, mi è capitato che MySql andava in bomba, buona
norma, anche se di solito al chiuso script viene rilasciata ogni risorsa,
fare free del resultset, chiudere la connessione al DB, file ecc...(magari
lo sapevi già)
Ciao.

 ha scritto nel messaggio
news:9v1lsd$gmi$1...@nreada.inwind.it...

Numero di record ? c'è una funzione dedicata ... mysql_num_rows()
$query = mysql_query("SELECT * FROM tabella");
$num = mysql_num_rows($query);
Alex

 Alex
Si, c'è la funzione mysql_num_rows($resultset);
A proposito di questa ti volevo chiedere Alex:
In termini di prestazioni è meglio eseguire una SELECT COUNT(*) FROM Tab e
"prendere" il valore dal resultset con mysql_result($resultset,0) o eseguire
la query SELECT * FROM tabella e poi ottenere il numero di record con
mysql_num_rows($resultset). In questo modo si deve far eseguire la query e
poi in base al resultset si deve calcolare il numero di row,doppio tempo di
elaborazione, prima la query e poi la mysql_num_rows() (Calcola che la
mysql_num_rows, deve scorrersi tutto il resultset). Solo nel caso in cui si
voglia sapere il numero totali di record di una tabella si deve eseguire la
COUNT e poi prendere direttamete il valore dal resultset con
mysq_result($resultset,0); io ho verificato questa cosa non tanto tempo fa.
Poi in termini di spreco di mem una COUNT(*) ritorna un resultset composto
solo da una row(il numero di rows) mentre una SELECT * ritorna una
spatafiacca di row.
Se sbaglio correggimi pure, come logica c'e'?
Ciao

"Alessio" <(
alessi...@libero.it
)@NOSPAM.tld> wrote in message
news:y8%Q7.7565$NB6.2...@news2.tin.it...

Un po' pesante come query per sapere (solo) quanti record ci sono...
COUNT(*) e' associtato direttamente ad una tabella e la query ha un costo 0
(in realta l'Omega = Const).
$numrows = mysql_result(mysql_query("SELECT COUNT(*) FROM links"),0);
echo $numrows;

 wrote in message
news:e90R7.274108$sq5.13...@news.infostrada.it...

Ok, allora questa è la soluzione.
Grazie per la precisazione Jurgen.
Ciao

Grazie a tutti per l'aiuto!!!
Siete stati davvero esaustivi (anche nell'indirizzamento di future ricerche
sull'argomento).