@jeixuxspn, PHP puede analizar variables dentro de cadenas con comillas dobles, por lo tanto:
Código PHP:
Ver original$query = "SELECT * FROM control where dni='$dni'";
//es igual a:
$query = "SELECT * FROM control where dni='".$dni."'";
de igual forma MySQL el error puede deberse a que trata de comparar un string con un integer, por lo que debería eliminar las comillas simples del SQL:
Código PHP:
Ver original$query = "SELECT * FROM control where dni=$dni";
y con la conversión explícita que le indique:
debería funcionar, además de que lo recomendable seria validar si dicho $_POST['dni'] es realmente un número, por el cual podría usar is_numeric().
No hace falta que repitas el mensaje si el usuario quien pregunta no ha respondido, puede que su problema sea otro.