Count(*) 行数を値として含む1行を返します。
mysql_num_rows($result)を使用する 実際には、Count(*)の行数をカウントしています。 結果これは本当に1つです 。
次のように変更します:
$result = mysql_query("SELECT * FROM smf_personal_messages", $link);
$num_rows = mysql_num_rows($result);
または、Count(*)を使用します mysql_fetch_arrayを使用した値(DBでカウントされ、テーブル全体を取得しないため、おそらくより良い) 。