文字列のフォーマット方法に関する質問に答えるには、簡単な答えはfmt.Sprintfを使用することです。 a> 文字列を構造化します。 ただし dbクエリにfmt.Sprintfを使用する際の簡単なメモについては、さらに下を参照してください。
例:
query := fmt.Sprintf("SELECT id FROM users WHERE login='%s'", login)
err = db.Query(query)
// Equivalent to:
rows, err := db.Query("SELECT id FROM users WHERE login=?", login)
これをクエリに使用すると、インジェクションから安全になります。そうは言っても、これを変更して、作成/更新/削除にもdb.Execを使用したくなるかもしれません。一般的な経験則として、 fmt.Sprintfでdb.Execを使用し、最初に入力をサニタイズしない場合は、SQLインジェクションを利用できます。 。
db.Execを使用したfmt.Sprintfが悪い理由の簡単な例を使用したGoPlay:
https: //play.golang.org/p/-IWyymAg_Q
db.Query
を使用する必要があります または