gpt4 book ai didi

mysql - 在 SELECT 语句内的 WHERE 子句中进行选择

转载 作者:行者123 更新时间:2023-11-29 00:42:41 25 4
gpt4 key购买 nike

我不太确定正确的技术措辞,所以请原谅我的标题,但这就是问题所在。我有一个 MySQL 数据库,在用户表中我有 *user_name*、一个 *password_salt* 和一个 md5 password,其中包含密码和 salt。在一个程序中,用户连接,我收到一个查询来发送以验证用户。当用户连接时,我需要一种方法来选择他们的用户名,并将给定的密码与存储的密码进行比较,这需要在 WHERE 语句的某处检索盐(我猜)。

这是我假设的“例子”:

SELECT user_name 
FROM users
WHERE user_name='$nick' AND
password = md5(CONCAT('$md5pass', md5((select password_salt FROM users where user_name='$nick'))))
LIMIT 1

解决方案更新:成功了,感谢您的建议,正常的选择就足够了,问题是 sql-auth api 没有收到密码,除非指定了端口。

最佳答案

实际上,您不仅可以在“SELECT”子句中,而且可以在“WHERE”子句中自由使用“FROM”子句中声明的表中的任何列,所以我认为这里不需要子查询。让它变得简单:

SELECT user_name 
FROM users
WHERE user_name='$nick' AND
password = md5(CONCAT('$md5pass', md5(password_salt)))
LIMIT 1

通过这种方式,只有同时满足以下两个条件的行才会被选中: - 用户名正确 - 行中的密码与给定的密码匹配

不过我不确定我是否正确使用了 md5() 函数。我复制了你的例子。

关于mysql - 在 SELECT 语句内的 WHERE 子句中进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11603614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com