0
Golang更新列
比方說,我有一個表employments
和結構Employment
與Postgres的
type Employment struct {
ID int `json:"id"`
Created_at string `json:"created_at"`
Updated_at string `json:"updated_at"`
Education string `json:"education"`
Job string `json:"job"`
Position string `json:"position"`
Business_phone string `json:"business_phone"`
Next_payday string `json:"next_payday"`
Employment_type int `json:"employment_type"`
Income float64 `json:"income"`
Additional float64 `json:"additional"`
}
用戶可以更新他們employment
,問題是我不知道哪些字段用戶要更新。
所以,我決定在範圍內輸入結構得到non nil fields
生成的查詢字符串,如UPDATE employments SET position=$1, income=$2 WHERE id=$3
一些事這是我得到這個時候
func FlexibleUpdate(table_name string, str interface{}, cond string, ret string) string {
query := "UPDATE " + table_name + " SET "
j := 0
m := structs.Map(str)
for i := range m {
if m[i] != "" && m[i] != 0 && m[i] != 0.0 && {
j++
query = query + strings.ToLower(i) + "=$" + strconv.Itoa(j) + ","
}
}
j++
// adding conditions
if cond != "" {
query = query[:len(query)-1] + " WHERE " + cond + "=$" + strconv.Itoa(j)
}
// return values
if ret != "" {
query = query + " RETURNING " + ret
}
return query
}
我不知道如何輸入值分配給$1, $2, ...
執行查詢
database.DB.QueryRow(query_string, value_1, value_2, ...)
讓我知道如果你有任何想法或另一種方式與r解決它。
SQL注入很多?這很容易受到SQL注入攻擊。至少就你發佈的代碼而言。 – RayfenWindspear
對不起,你是什麼意思@RayfenWindspear? –
假設這來自某種類型的Web表單。在前端使用javascript或jQuery管理表示「此字段已更新」的「bool」匹配列表。然後,您可以使用它來確定用戶想要更新的內容。 – RayfenWindspear