Count(*) zwraca jeden wiersz, który zawiera liczbę wierszy jako wartość.
Używając mysql_num_rows($result) w rzeczywistości liczysz liczbę wierszy Count(*) wynik który tak naprawdę jest jednym .
Zmień go na:
$result = mysql_query("SELECT * FROM smf_personal_messages", $link);
$num_rows = mysql_num_rows($result);
Lub po prostu użyj Count(*) wartość (która jest prawdopodobnie lepsza, ponieważ liczy się w bazie danych i nie pobiera dla niej całej tabeli) przy użyciu mysql_fetch_array .