Ну )) правильно )
Поэкспериментируй.
Ты - пользователь А, с id = 1
Твой реферал 1 уровня - Пользователь Б, с id = 2.
При его регистрации происходит поиск реферера по ид из реферальной ссылки и заполняется поле. Тут все ок заполняется, как ты говоришь. А теперь на уровень выше, вложенной поиск.
Пользователь С регистрируется, ищется ид реферера из базы по пригласительной ссылке. Ок, нашли. Пользователю Б регистрация увеличит поле referals, верно? Потому что для пользователя Б пользователь С является рефералом 1 уровня, но вот для пользователя А уже второго уровня. Как это исправить?
После того, как скрипт найдет реферера, нужно найти реферера теперь у этого пользователя. Тот же самый поиск, только теперь искать реферера у id пользователя, которого только что нашли в роли реферера для пользователя С. Это отчасти и есть рекурсия в программировании, только в данном случае она легкая. И этот поиск будет всегда проводится, независимо от уровня реферала и реферера. И ответ один: Или найдет ид, или не найдет, на этом поиск остановится.