Hola, pues tengo el siguiente código PHP, que se conecta a la BD, comprueba si el usuario indicado no existe y en ese caso lo da de alta en la BD y en una tabla propia. El caso es que la consulta donde compruebo que el usuario no exista, siempre da como resultado una fila (Como si el usuario ya estuviera registrado) y encima entra en el código del else mostrando ese mensaje y registrando al usuario en la BD.
La tabla db_discos.usuarios la he creado yo para ir almacenando los usuarios.
Código:
<?PHP
// Se obtienen los parámetros de conexión enviados desde el POST
$name = $_POST['taname'];
$pass = $_POST['tapass'];
// Conectamos como el usuario que tiene permisos para crear otros usuarios
$con = mysql_connect ("localhost", "root", "root");
if ($con){
mysql_select_db ("db_discos", $con);
// Si hemos conectado correctamente, comprobamos que el usuario no exista en la BD
$res = mysql_query ("SELECT * FROM db_discos.usuarios WHERE nombre='$name'", $con);
$num = mysql_num_rows ($res);
if ($num==1){ // Se ha encontrado al menos un usuario con el mismo nombre
echo "<html><head><meta http-equiv=\"refresh\" content=\"5; url=entrada.html\"></head><body><div align=\"center\"><font face=\"Courier New\">El usuario de nombre $name ya se encuentra registrado en el sistema.<br>Regístrese con otro nombre.<br>En 5 segundos volverá a la página de entrada. RESULTADO: $num</font></div></body></html>";
}
else{ // En este caso no se encontraron usuarios con el mismo nombre. Lanzamos la secuencia para dar de alta
mysql_query ("GRANT SELECT, INSERT, UPDATE ON db_discos.discos TO $name IDENTIFIED BY '$pass'", $con);
mysql_query ("INSERT INTO usuarios (nombre, password) VALUES ('$name', '$pass')", $con);
echo "<html><head><meta http-equiv=\"refresh\" content=\"5; url=entrada.html\"></head><body><div align=\"center\"><font face=\"Courier New\">Registro completado satisfactoriamente ($name, $pass).<br>Ahora puede usar su nombre y contraseña para acceder.</font></div></body></html>";
}
}
else{ // En este caso no hemos conseguido conectar
echo "<html><head><meta http-equiv=\"refresh\" content=\"5; url=entrada.html\"></head><body><div align=\"center\"><font face=\"Courier New\">Lo sentimos, no se ha podido conectar con la BD.<BR>Reinténtelo de nuevo en unos minutos.<br>En 5 segundos volverá a la página de entrada.</font></div></body></html>";
}
mysql_close ($con);
?>
¿Qué puede ir mal? He dado mil vueltas al código y no me percato de nada.