Il Count(*) restituisce una riga che contiene il numero di righe come valore.
Usando mysql_num_rows($result) stai effettivamente contando la quantità di righe di Count(*) risultato che è davvero uno .
Cambialo in:
$result = mysql_query("SELECT * FROM smf_personal_messages", $link);
$num_rows = mysql_num_rows($result);
Oppure usa semplicemente il Count(*) valore (che è probabilmente migliore poiché conta nel DB e non recupera l'intera tabella per esso) usando mysql_fetch_array .