Golang 中使用MySql 進行動態ORDER BY
問題:
問題:問題:
分析:
與過濾器參數不同,佔位符(?)不能用於 SQL 關鍵字或識別符,包括 ORDER BY 子句。
ordCol := "title" qtext := fmt.Sprintf("SELECT * FROM Apps ORDER BY %s DESC", ordCol) rows, err := db.Query(qtext)
解:
要實現動態排序,可以使用 fmt.Sprintf() 動態組合查詢文字。例如:valid := regexp.MustCompile("^[A-Za-z0-9_]+$") if !valid.MatchString(ordCol) { // Invalid column name, prevent SQL injection }注意事項:動態組裝查詢時,實施針對 SQL 注入的保護措施至關重要。這涉及確保用於列名稱的值符合特定標準,例如僅允許使用英文字母、數字和下劃線:
以上是如何在 MySQL 中實作 Go 中的動態 ORDER BY 子句來防止 SQL 注入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!