【问题标题】:Respect the lowercase and uppercase letters when getting a mysql data [duplicate]获取mysql数据时尊重小写和大写字母[重复]
【发布时间】:2022-01-13 20:08:04
【问题描述】:

我想知道在从 mysql 服务器(确切地说是 phpmyadmin)获取信息时如何尊重小写/大写字母,这是工作代码,我制作了一个注册/登录脚本,我想添加它。

def checkLogin():
    global windowOpened
    
    getmail = emailEntry.get()
    getpass = passwordEntry.get()
    
    sql = "SELECT * FROM users WHERE email = %s AND password = %s"
    
    mycursor.execute(sql, [(getmail), (getpass)])
    results = mycursor.fetchall()
    
    if results:
        for i in results:
            logWindow.destroy()
            messagebox.showinfo("Succes", "Logged in succesfully!")
            windowOpened = 0
        else:
            messagebox.showinfo("Error", "Email or password are incorrect.")

如果我输入全大写密码,即使密码全小写,它仍然是正确的。

【问题讨论】:

  • getpass 确实是一个字符串,因此您可以按照自己喜欢的方式进行操作
  • 请以正确的格式重新发布您的代码。见stackoverflow.com/editing-help
  • 你不应该首先以明文形式存储密码,你应该对其进行哈希处理。
  • 请给我们看看SHOW CREATE TABLE users好吗?
  • 使用hashlib.pbkdf2_hmac 对您的密码进行哈希处理。

标签: python mysql


【解决方案1】:

您应该使用BINARY 使您的查询区分大小写:

SELECT * FROM users WHERE email = BINARY %s AND password = BINARY %s

【讨论】:

  • 谢谢,感谢您的快速回复。
猜你喜欢
  • 2016-05-03
  • 2020-09-11
  • 2019-01-17
  • 1970-01-01
  • 2022-11-05
  • 1970-01-01
  • 1970-01-01
  • 2018-02-03
  • 2021-06-03
相关资源
最近更新 更多