如何根据指定account_id判断quiz_num_1是否为quiz_null并输出对应内容?
解决方法
你的问题出在SQL语句写法和逻辑判断上,以下是修正后的实现:
问题分析
原代码的SQL语句存在语法错误,不能在一个execute里同时写两个SELECT语句;而且逻辑上没正确关联account_id和quiz_num_1的查询条件,应该直接查询指定account_id对应的quiz_num_1值,再做判断。
修正后的代码
# 用参数化查询避免SQL注入,同时正确查询指定account_id的quiz_num_1字段 mycursor.execute("SELECT quiz_num_1 FROM quizzes_lib WHERE account_id = %s", (user_account_id,)) result = mycursor.fetchone() # 获取单条结果(account_id应为唯一值) if result: quiz_value = result[0] if quiz_value == 'quiz_null': print("你的题库中没有测验") else: print("你的题库中有测验") else: print("未找到该账号对应的记录")
关键说明
- 采用参数化查询(
%s作为占位符)替代f-string拼接SQL,既避免SQL注入风险,也保证语法正确。 - 使用
fetchone()获取单条结果,比fetchall()更高效,因为一个account_id通常对应一条记录。 - 先判断是否查询到记录,再判断
quiz_num_1的值,覆盖了账号不存在的边界情况。
内容的提问来源于stack exchange,提问作者jwad shaqir
相关产品推荐
相关产品推荐

