GoLangで動的SQLを作成したいのですが、正しい方法を見つけることができないようです。GoLang App Engineの動的SQLクエリ
基本的に、私は何をしたい:
query := "SELECT id, email, something FROM User"
var paramValues []string
filterString := ""
if userParams.Name != "" {
paramString += " WHERE id = ?"
paramValues = append(paramValues, userParams.Name)
}
if userParams.UserID != "" {
if len(paramString) > 0 {
paramString += " AND"
} else {
paramString += " WHERE"
}
paramString += " email = ?"
paramValues = append(paramValues, userParams.UserID)
}
stmtOut, err := db.Prepare(query + paramString)
err = stmtOut.QueryRow(paramValues).Scan(&id, &email, &something)
関連
building a dynamic query in mysql and golangに私は、SQLインジェクションを許可していません。これを行うには、固体の道を見つけることができませんしてきました。私の上記の解決策の問題は、QueryRow()がパラメータとして[]文字列を取らないということです。
SQLインジェクションから保護したいので、fmt.Sprintfは実際にこの問題を解決しません。
このようにして、IDまたは電子メールのいずれかを使用してユーザーの検索を許可することができます。さらに、このロジックを検索可能なフィールドの異なるオブジェクトに使用します。
私は行く-SQL-ドライバ/ mysqlの