Bueno si vamos a un caso real un dni no es ni muchos menos un entero, ya que este se compone de 8 números y una letra, por lo que estará obligado a hacer una comparación de cadenas.
Tienes razón en esto:
Código PHP:
$query = "SELECT * FROM control where dni='$dni'";
//es igual a:
$query = "SELECT * FROM control where dni='".$dni."'";