Для начала вам нужно оптимизировать свой запрос, а не повторять запросы в цикле while, сделайте это вместо:
SELECT deg.eID, de.title
FROM discos_events_guests deg
JOIN discos_events de on de.id = deg.eID
WHERE uID =:user
AND date < unix_timestamp(NOW())
Например, чтобы получить предыдущее, вы должны сделать:
$grabEvents = $connect->prepare("SELECT de.title
FROM discos_events_guests deg
JOIN discos_events de on de.id = deg.eID
WHERE uID =:user
AND date < unix_timestamp(NOW())");
$grabEvents->bindValue(":user", $profile_id);
$grabEvents->execute();
if($grabEvents->rowCount()>0){
while($event = $grabEvents->fetch()){
echo $event["title"]."<br>";
}
}
Затем просто повторите то же самое для следующего запроса:
$grabEvents = $connect->prepare("SELECT de.title
FROM discos_events_guests deg
JOIN discos_events de on de.id = deg.eID
WHERE uID =:user
AND date > unix_timestamp(NOW())");
$grabEvents->bindValue(":user", $profile_id);
$grabEvents->execute();
if($grabEvents->rowCount()>0){
while($event = $grabEvents->fetch()){
echo $event["title"]."<br>";
}
}