Вы пытались выполнить этот запрос вручную на мониторе mysql? Ничто в вашем коде не приведет к бесконечному циклу, поэтому, скорее всего, ваш запрос не выполняет соединения, как вы ожидаете, и выполняет кросс-продуктовый тип и создает «дублирующие» записи.
В частности, ваш запрос выглядит очень подозрительно - вы используете ленивый подход «из нескольких таблиц» вместо явного указания типов соединений и дважды используете таблицу members (FROM members ...
и INNER JOIN members
) , Вы не указываете связь между исходной таблицей членов и объединенной / псевдонимной m
, поэтому, скорее всего, вы делаете members * members
выборку из нескольких продуктов.
если вы, кажется, извлекаете только имя события из выпадающего списка, вы можете попробовать удалить неиспользуемые таблицы - канаву dates
и results
. Это значительно упростит ситуацию, а затем (угадав) вы сможете сократить запрос до:
SELECT event.id, event.eventname
FROM event
INNER JOIN sportevents ON event.id = sportevents.event_id
INNER JOIN members ON sportevents.id = members.id
INNER JOIN userlogins ON members.id = userlogins.id
WHERE userlogins.username = '$un'
Я не знаю, нужно ли объединение членов / пользовательских журналов - похоже, что оно просто передает sportevents.id участникам, но, не зная схемы вашей БД, я пытался воссоздать исходный запрос как можно лучше.