Python,slite3
c.execute("UPDATE accounts SET ? = ? WHERE num=?", (db['choise'], db['data'], db['num']))
所以我不知道它有什么问题
db是搁置数据库
答案 0 :(得分:2)
列(和表)名称无法参数化。使用字符串格式化并查询其余变量的参数化:
c.execute("UPDATE accounts SET {column} = ? WHERE num = ?".format(column=db['choise']), (db['data'], db['num']))
那就是说,确保你正确地验证/清理/逃避db['choise']
值或者真正信任它的来源(尽管在数据库交互方面并不信任任何人)。
答案 1 :(得分:1)
列名不能作为参数给出。你可以尝试
c.execute("UPDATE accounts SET "+str(db['choise'])+" = ? WHERE num=?", (db['data'], db['num']))