Cita: Si introduzo un usuario que ya existe en la base de datos, perfecto, me salta el echo como que ya existe, pero sino no me salta nada, y no lo entiendo, o es una cosa o es otra.
¿Te has puesto a pensar que si la consulta no encuentra nada en la base de datos sencillamente no tendrás resultados?
Cuando buscas un usuario que ya existe es más que obvio: existe, y por ende hay resultados.
Pero si buscas algo que no existe ¿qué quieres que te devuelva la consulta?
No hay coincidencias, por ende, no hay while(), etc.
Lo lógico es que no dependas del resultado sino de la mera consulta, si la consulta obtiene resultados ya está confirmado que el usuario existe: no hace falta el while() ni el if/else dentro.
Usa tu sentido común.