Php 为什么这个简单的查询不起作用?

Php 为什么这个简单的查询不起作用?,php,mysql,Php,Mysql,我正在尝试登录一个用户,但我总是无法从下面的查询中得到任何结果。如果我只是查询用户名,它就可以工作了。数据库中的一切看起来都很好 非常感谢您的帮助 谢谢 $login = 1; $username = 'james'; $password = 'myPassword'; if ($login == 1) { $pwdPassword = md5($password); $insertUser = mysql_query("INSERT INTO users (us

我正在尝试登录一个用户,但我总是无法从下面的查询中得到任何结果。如果我只是查询用户名,它就可以工作了。数据库中的一切看起来都很好

非常感谢您的帮助

谢谢

$login = 1; 
$username = 'james'; 
$password = 'myPassword';   

if ($login == 1)
{
    $pwdPassword = md5($password); 

    $insertUser = mysql_query("INSERT INTO users (username, password) VALUES ('$username', '$pwdPassword')"); 



    $queryUser = "SELECT * FROM users WHERE username='$username' AND password='".md5($password)."'"; 

    $result = mysql_query($queryUser);


    if (mysql_num_rows($result) != 0)
    {               
        echo 'success'; 
        return;

    }
    else
    {   
        echo mysql_error(); 
        echo 'error';   
        return;

    }



}
更新

如果我在不使用md5的情况下尝试上面的脚本,它就可以正常工作。所以我想问题在于md5。md5是处理密码的最佳方法还是有更好的方法

编辑解决方案 你说代码在没有md5的情况下可以正常工作,但在md5的情况下却不行。当您更改代码以加密密码时,是否也手动将数据库条目更改为md5哈希

请记住,md5所做的只是将密码转换成一堆乱码。因此,您需要将这些乱码存储在数据库中,并使用它们与您创建的用户输入的md5哈希进行比较

确保数据库中的密码字段为CHAR32

md5创建一个32位散列

始终为32个字符,请将字段大小设置为32,以避免在插入字段时被截断

除此之外,我认为剧本没有任何问题。尝试将您从数据库中提取的内容作为密码和$pwdPassword进行回显-这可能会让您了解出了什么问题。

已编辑的解决方案
"SELECT * FROM users WHERE username='$username' AND password='".md5($password)."'";
你说代码在没有md5的情况下可以正常工作,但在md5的情况下却不行。当您更改代码以加密密码时,是否也手动将数据库条目更改为md5哈希

请记住,md5所做的只是将密码转换成一堆乱码。因此,您需要将这些乱码存储在数据库中,并使用它们与您创建的用户输入的md5哈希进行比较

确保数据库中的密码字段为CHAR32

md5创建一个32位散列

始终为32个字符,请将字段大小设置为32,以避免在插入字段时被截断

除此之外,我认为剧本没有任何问题。尝试将您从数据库中提取的内容作为密码和$pwdPassword进行回显-这可能会让您了解出了什么问题

"SELECT * FROM users WHERE username='$username' AND password='".md5($password)."'";
我不相信您需要再次调用md5函数,因为您已经声明了$pwdPassword

这可能会奏效:

"SELECT * FROM users WHERE username='$username' AND password='" . $pwdPassword . "'";
我不相信您需要再次调用md5函数,因为您已经声明了$pwdPassword

这可能会奏效:

"SELECT * FROM users WHERE username='$username' AND password='" . $pwdPassword . "'";

密码可能是保留名称,请尝试将其转义

`password`

密码可能是保留名称,请尝试将其转义

`password`

你不工作是什么意思?回声输出是什么?那么,为什么使用return而不返回任何内容?insert是否按预期工作?insert工作,但脚本会转到“echo”错误行…您能否确保md5的结果不会生成SQL非法字符?md5只返回[0-9a-z]对吗?不工作是什么意思?回声输出是什么?那么,为什么使用return而不返回任何内容?insert是否按预期工作?insert工作,但脚本会转到“echo”错误行…您能否确保md5的结果不会生成SQL非法字符?md5只返回[0-9a-z]对吗?@user1251004是否正确回显?数据库中的密码等于什么?非常感谢。我的密码是varchar,有24个字符…:愚蠢的我手对口,形状像枪,BANG@user1251004它的回声正确吗?数据库中的密码等于什么?非常感谢。我的密码是varchar,有24个字符…:傻傻的我手对口,形状像枪,砰