Guarda, ho provato questa query su phpmyadmin è funziona (mettendo un record 11:00 - 11:50):
SELECT ... WHERE ('11:30:00' BETWEEN dalle AND alle) OR ('12:20:00' BETWEEN dalle AND alle) OR ('11:30:00' < dalle AND '12:20:00' > alle)
Sei sicuro che i valori $orario_i/f siano corretti ?
PS: l'ultima condizione l'hai sbagliata : ('". $orario_i ."' < dalle_ore AND '". $orario_f ."' > alle_ore)";