Zakręciłeś i to dla mnie zdrowo.
Wstawiasz do bazy do pola formatu datetime datę wygaśnięcia blokady dostępu do konta tak?
To jakim problemem potem jest wywołanie zwykłego kodu:
<?php
mysql_query( 'DELETE FROM banned WHERE ip="'. $ip .'" and pole_z_Twoja_data <= "'. date('Y-m-d H:i:s') .'";' ); ?>
Taką metodą jaką chciałeś generować datę to się można zabić jak tępym nożem.
Optymalizuj połączenia, po co masz je wyciągać i sprawdzać, niech baza się tym zajmie i nie zwraca Ci czegoś czego tak naprawdę nie potrzebujesz.
Dobrze skierowałem mój tok myślenia?
A nawet zobacz: wyszukujesz te rekordy, wyciągasz ich ID a potem wywalasz WSZYSTKIE bany dla danego ip. bez sensu nie? już wiesz gdzie leży błąd? nie może nie usuwać bana bo to mu właśnie każesz, jeśli już to wyrzucaj po ID rekordu (choć to też bez sensu nie?)