Как узнать что записи в БД кончились?
жаль что нельзя добавить else после while. 
Специально для жертв видеокурсов: РНР за 20 лет приобрел некоторые новые функции. Если учить пхп не только по видеокурсам, но открыть однажды для себя мануал, то там обнаружится такая функция, как mysqli_fetch_all(). И с ее помощью конструкция while($row = mysql_fetch_array($data)) из прошлого века, (к которой доблестные видеоблогеры осилили дописать буквочку i и решили что их код стал нереально современным) превратится в тыкву. 
Если хватит способностей проверить в JS на пустоту массив, то вместо "while" пишем просто echo json_encode(mysqli_fetch_all($data));
если хочется обязательно null, то $rows = mysqli_fetch_all($data) ?: null;
echo json_encode($rows);
как только в ответ на очередной запрос на подгрузку сервер не вернул данные - можно считать, что они закончились.