A
Count(*) retorna uma linha que contém o número de linhas como um valor. Usando
mysql_num_rows($result) você está realmente contando a quantidade de linhas do Count(*) resultado que realmente é um . Altere para:
$result = mysql_query("SELECT * FROM smf_personal_messages", $link);
$num_rows = mysql_num_rows($result);
Ou apenas use o
Count(*) value (o que provavelmente é melhor, pois conta no banco de dados e não recupera a tabela inteira para ele) usando mysql_fetch_array .