Te genera el registro .. ? y no te ingresa los datos? .. o no genera el registro entero?
No es necesario que concatenes (.) la sentencia SQL que usas:
Código PHP:
$sql = "INSERT INTO clientes (nombre,apellidos,dni) VALUES('$nombre,'$apellidos','$dni')";
Cuidado con la sintax SQL .. tal vez )VALUES sea correcto (que es lo que estabas generando) .. pero mejor usar un espacio ...
Y para salir de dudas si hay algún error de conexión o SQL usa preferentemente estructuras tipo:
Código PHP:
$result = mysql_query($sql, $link) or die (mysql_error());
Así con el mysql_error() verás si hay errores de SQL o conexión a tu BD.
Revisa que tus variables tengan el valor esperado .. Haciendo un simple echo a tu $sql lo puedes comprobar si esa sentencia SQL se forma correctamente.
Un saludo,