Mysql Query - que está retornando o resultado incorreto de Blatanty

1

Estou construindo um nó VPS que está executando o Ubuntu 10.10LTS, o Apache2, o Mysql 5.1 e o php5.

Não consegui fazer login no meu administrador do site por meio do navegador, embora eu esteja usando os detalhes de login corretos. Então eu entrei na linha de comando para verificar os resultados.

Quando executo essa consulta, recebo resultados esperados:

mysql> select * from users;
+----+----------+-----------------------+----------+
| id | username | email                 | password |
+----+----------+-----------------------+----------+
|  1 | myUserName    | [email protected] | myPassword |
+----+----------+-----------------------+----------+

E o mesmo acontece com essa consulta:

mysql> select * from users where id = 1;
+----+----------+-----------------------+----------+
| id | username | email                 | password |
+----+----------+-----------------------+----------+
|  1 | myUserName    | [email protected] | myPassword |
+----+----------+-----------------------+----------+
1 row in set (0.00 sec)

Mas quando executo essa consulta, recebo essa "resposta inesperada":

mysql> select * from users where username = 'myUserName' and password = 'myPassword';
Empty set (0.00 sec)

Não sei por que isso está acontecendo. Qualquer ajuda seria muito apreciada. BTW .. Eu vou estar criptografando os detalhes do usuário, mas por enquanto eu só quero configurá-lo.

Por favor ajude

Obrigado

    
por user866190 13.04.2012 / 18:29

2 respostas

3

Apenas para transformá-lo em uma resposta, com base na formatação de suas consultas SQL, parece que você tem espaços no campo para o seu nome de usuário. Isso é:

mysql> select * from users where id = 1;
+----+----------+-----------------------+----------+
| id | username | email                 | password |
+----+----------+-----------------------+----------+
|  1 | myUserName    | [email protected] | myPassword |
+----+----------+-----------------------+----------+
1 row in set (0.00 sec)

Em outras palavras, o campo de nome de usuário para id=1 é myUserName___ , em que _ é usado para ilustrar espaços. É por isso que, quando você usa username LIKE 'myUserName%' (que diz incluir tudo o que começa com myUserName ), funciona corretamente.

    
por 13.04.2012 / 18:54
1

A senha também é o nome de uma função mysql que contém senhas; Eu me pergunto se isso poderia ser o problema? Tente citar os nomes das tabelas.

Além disso, parece haver algum espaço em branco após a string myUserName. Eu suspeito que isso indica um erro de aplicativo. Se você fosse a update users set username='myUserName' where id=1; , provavelmente acharia que funciona.

    
por 13.04.2012 / 18:34