MySql を使用した Golang の動的 ORDER BY
問題:
クエリの動的順序付けの困難db.Select() を使用した結果プレースホルダー。
分析:
フィルター パラメーターとは異なり、プレースホルダー (?) は、ORDER BY 句を含む SQL キーワードや識別子には使用できません。
解決策:
ダイナミックを実現するには順序付けを行うには、fmt.Sprintf() を使用してクエリ テキストを動的に組み立てることができます。例:
ordCol := "title" qtext := fmt.Sprintf("SELECT * FROM Apps ORDER BY %s DESC", ordCol) rows, err := db.Query(qtext)
注意事項:
クエリを動的に組み立てる場合、SQL インジェクションに対する安全策を実装することが重要です。これには、列名に使用される値が、英語の文字、数字、アンダースコアのみを許可するなどの特定の基準に準拠していることを確認することが含まれます:
valid := regexp.MustCompile("^[A-Za-z0-9_]+$") if !valid.MatchString(ordCol) { // Invalid column name, prevent SQL injection }
以上がSQL インジェクションを防ぐために MySQL を使用して Go に動的 ORDER BY 句を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。