sql更新集?=?在哪里?(python,sqlite3)
Python,slite3sql更新集?=?在哪里?(python,sqlite3),python,sqlite,Python,Sqlite,Python,slite3 c.execute("UPDATE accounts SET ? = ? WHERE num=?", (db['choise'], db['data'], db['num'])) 所以我不知道这有什么问题 db是搁置数据库无法参数化列(和表)名称。对其使用字符串格式,对其余变量使用查询参数化: c.execute("UPDATE accounts SET {column} = ? WHERE num = ?".format(column=db['choise']),
c.execute("UPDATE accounts SET ? = ? WHERE num=?", (db['choise'], db['data'], db['num']))
所以我不知道这有什么问题
db是搁置数据库无法参数化列(和表)名称。对其使用字符串格式,对其余变量使用查询参数化:
c.execute("UPDATE accounts SET {column} = ? WHERE num = ?".format(column=db['choise']), (db['data'], db['num']))
也就是说,请确保正确验证/清理/转义db['choise']
值,或者真正信任其来源(尽管在数据库交互方面不要信任任何人)。列(和表)名称不能参数化。对其使用字符串格式,对其余变量使用查询参数化:
c.execute("UPDATE accounts SET {column} = ? WHERE num = ?".format(column=db['choise']), (db['data'], db['num']))
也就是说,请确保正确验证/清理/转义
db['choise']
值,或者真正信任它的来源(尽管在数据库交互方面不要信任任何人)。列名不能作为参数提供。你可以试试
c.execute("UPDATE accounts SET "+str(db['choise'])+" = ? WHERE num=?", (db['data'], db['num']))
列名不能作为参数提供。你可以试试
c.execute("UPDATE accounts SET "+str(db['choise'])+" = ? WHERE num=?", (db['data'], db['num']))