2014-01-27 35 views
1

所以我有這樣的SQL,它的工作原理:SQL排序,字符串格式化不工作

cursor.execute('select * from video_title_difference where title like 
       %s order by provider desc limit %s offset %s', 
       ('%' + search + '%', limit, offset)) 

,但如果我改變ORDER BY變量(現在的「供應商」)給一個變量,它不工作在所有:

cursor.execute('select * from video_title_difference where title like %s 
       order by %s limit %s offset %s', 
       ('%' + search + '%', order_by, limit, offset)) 

它'工作',但它並沒有命令它。我在這裏做錯了什麼?

回答

2

問題是您正試圖設置一個表作爲參數。

表名不能被參數化。

我的方法是在代碼中對錶名進行硬編碼,您需要明白,使用表名會導致安全問題,特別是如果它來自用戶。

我會添加對這個問題的一些帖子:

post1post2