Python连接MySQL触发Tkinter回调异常:SQL参数未全使用
解决MySQL参数未全部使用的编程错误
嘿,我一眼就瞅出问题所在啦!你的SQL语句里只给密码用了占位符?,但用户名那里写的是硬编码的text字符串,不是占位符——这就导致你传了两个参数(用户名和密码),但SQL语句只用到了一个,数据库自然会报错说参数没全部用上。
错误代码的核心问题
看你这段代码:
cursor.execute("SELECT * FROM `member` WHERE `username` = text AND `password` = ?", (USERNAME.get(), PASSWORD.get()))
这里的username = text是把text当成了固定字符串字面量,不是用来接收参数的占位符,所以数据库只会处理后面的?,你传的第一个参数(用户名)就被闲置了,直接触发ProgrammingError。
修正后的正确代码
把用户名的条件也改成占位符?,让两个参数能对应上两个占位符:
cursor.execute("SELECT * FROM `member` WHERE `username` = ? AND `password` = ?", (USERNAME.get(), PASSWORD.get()))
额外小提醒
这种用占位符的方式是正确且安全的,能有效防止SQL注入攻击,千万别图省事直接把变量拼进SQL语句里,那样会埋下很大的安全隐患哦。
内容的提问来源于stack exchange,提问作者Harsh Joshi
相关产品推荐
相关产品推荐

