mysql_num_rows retourne le nombre d'enregistrement retournés par une requête SELECT. Si ton SELECT retourne 1 enregistrement, mysql_num_rows($dataset) vaudra 1 (entier numérique). Si ton SELECT retourne 12345 enregistrements, mysql_num_rows($dataset) vaudra 12345.
mysql_num_rows(...) est toujours supérieur ou égal à zéro.
Si plusieurs personnes ont le même login, bin il retournera le nombre de logins qui se "chevauchent".
Concernant les entités : le fait que tu copies direct dans phpmyadmin la requête avec le bon login et que ça marche peut être une question de caractères accentués etc.
par exemple si ton login est Dédé, il sera affiché Dédé mais dans le code source, il peut soit être Dédé, soit Dédé
Auquel cas lorsque tu fais ton SELECt, il SELECT WHERE login='Dédé' ce qui peut expliquer, si ta BDD dontient "Dédé" que rien ne soit retourné.
Tu travailles en quel charset aussi ? UTF-8 ou ISO-8859-1(5) ? Dans ta base, et dans ton fichier.
Parce que le "é" en UTF-8 et le "é" en ISO ne sont "pas les mêmes".