You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python开发登录功能时,查询MySQL匹配用户名密码的行失败求助

登录查询代码问题分析与修正

核心问题拆解

  • SQL语法错误:WHERE子句不能用逗号分隔条件,必须用AND连接;登录验证属于精确匹配场景,不该用模糊查询的LIKE,要用精确匹配的=,原语句的写法数据库无法识别。
  • SQL注入高危风险:直接用%拼接字符串生成SQL是严重的安全漏洞,恶意用户可通过构造特殊输入篡改SQL逻辑,窃取或破坏数据库数据。
  • Python语法错误:print语句没有缩进,不符合Python代码块的缩进规则,会直接触发语法报错。

修正后的代码

# 使用参数化查询避免注入,同时修正SQL语法
cursor.execute("SELECT * FROM user WHERE username = %s AND password = %s", (username, password))
ecreds = cursor.fetchone()  # 用户名唯一,用fetchone比fetchall更高效
if ecreds:
    print(f"Login successful. Welcome, {ecreds[0]}")  # 根据你的user表结构,调整用户名对应的列索引

重要额外提醒

绝对不要明文存储用户密码!必须用bcrypt、passlib这类专业库对密码做哈希处理后再存入数据库,验证时对用户输入的密码重新哈希,再和数据库中的哈希值对比,这是登录功能的基本安全要求。

内容的提问来源于stack exchange,提问作者Invictus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 01:07:39