我正在使用 SQLite
这是我的查询。我想检索三列并按其中一个列名排序。
query = "SELECT user_name, %s, %s FROM highscores_skills ORDER BY %s DESC"
cursor.execute(query, [skill, skill_exp, skill_exp])
我从GET请求中获得skill
,skill_exp
基本上是'_exp'附加到技能。
不幸的是,这不起作用。 我得到了列名作为结果。 像这样, 约翰,攻击,attack_exp Doe,attack,attack_exp
其中,攻击的值为skill
,而attack_exp的值为skill_exp
如果我不使用params但它很容易出现SQL注入,那么它可以工作。
我不确定是什么问题。我也尝试使用?
代替%s
作为占位符,就像在Python SQLite中一样,但没有。
答案 0 :(得分:0)
您不能在sql引擎中使用占位符作为列名
一个。
insert into authorized_users values (sha1('".$name."'), sha1('".$password."'));
由于sqlinjection而不安全
乙
query = "SELECT user_name, %s, %s FROM highscores_skills ORDER BY %s DESC"%(skill, skill_exp, skill_exp)
cursor.execute(query)
更安全,因为只允许预定义的查询