【问题标题】:MySQLdb, Python raw query and customized ORDER BYMySQLdb、Python 原始查询和自定义 ORDER BY
【发布时间】:2011-04-14 13:54:06
【问题描述】:

我正在尝试执行以下操作:

query = "SELECT * FROM table ORDER BY %s %s"
parameters = ['avg', 'DESC']

但是参数映射不正确。

SELECT * FROM table ORDER BY 'avg' 'DESC'

代替

SELECT * FROM table ORDER BY avg DESC

你知道为什么吗?

【问题讨论】:

    标签: python mysql-python


    【解决方案1】:

    使用这个:

    "SELECT * FROM table ORDER BY %s %s" % ('avg', 'DESC')
    

    应该可以解决问题。

    【讨论】:

    • 尽管取决于这些值的来源,您可能会有注入风险
    • 对于这个参数我可以阻止注入,但对于之前使用的其他参数则不行。使用连接,我应该可以做到。
    • 那是另一个故事(程序问题),问题是技术问题。但我同意你的看法:)
    【解决方案2】:

    您不能使用参数来动态指定字段名称。它们仅指定值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-06
      • 2019-01-21
      • 1970-01-01
      • 1970-01-01
      • 2013-05-16
      • 2012-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多