forse perchè mysql_query anche se non trova una corrispondenza lo stesso ha fatto il suo lavoro, ossia restituisce un indicativo di risorsa che appunto nel tuo caso non contiene dati.
Solo se la query non viene eseguita correttamente allora restituisce false e quindi viene eseguito "or die".