У Вас нет обработки ошибок вообще в этом, и это - проблема. Если Ваш вызов к mysql_query () не будет работать по некоторым причинам, то он возвратит FALSE. Это затем вручено mysql_fetch_assoc (), и это перестанет работать также.
Действительно необходимо делать некоторую основную обработку ошибок, что-то вроде этого:
$sql = "SELECT * FROM `newsfeed_comments` WHERE `post_id` = '".$post_id."' && `reply_id` IS NULL ORDER BY `date` DESC";
$result = mysql_query($sql);
if (!$result) {
//do error handling and fail
}
$i = 0;
while ($row = mysql_fetch_assoc($result)) {
...
Эта страница имеет некоторые хорошие примеры того, как сделать это с mysql_fetch_assoc ().
Программа оборонительно, проверьте на состояния ошибки на чем-либо, что может возможно перестать работать, и производить информативные сообщения об ошибках о том, что произошло, и у Вас будут намного лучшие результаты.