向 sqlite db golang 提交哈希时出错

问题描述 投票:0回答:1

尝试将哈希值从表单发送到 sqlite 数据库

func Signup(r http.ResponseWriter, w *http.Request)  {
    w.ParseForm()
    email := w.Form.Get("Email")
    if !govalidator.IsEmail(email) {
        utils.ServerResponse("email is incorrect", "frontend/index.html", r)
        return
    }

    password := w.Form.Get("Password")
    hash, err := bcrypt.GenerateFromPassword([]byte("Password"), bcrypt.DefaultCost)
    if password == "" || len(password) < 6 {
        utils.ServerResponse("Password length must be longer than 6 letters and must contain numbers and uppercase letters", "frontend/index.html", r)
        return
    }

    query := fmt.Sprintf("INSERT INTO User (email, password)", VALUES "email", "hash")

    fmt.Println(query, string(hash)) // put this here for debugging

    statement , err := db.SqliteDatabase.Prepare(query)

在终端中输出并且没有任何内容提交到数据库:

INSERT INTO User (email, password)
                VALUES ("email" , "hash")
        %!(EXTRA [email protected], string=21818921) $2a$10$S5DObh/Kwbnl1JMvb.Xzf.Vo9SJsOMDaFugWstf/1xGCPTnZBxr3y
near "%": syntax error
sqlite go hash bcrypt
1个回答
1
投票

发现我错误地使用了 fmt.Sprintf 函数并修复了它。

query := fmt.Sprintf(`
        INSERT INTO User (email, password)
        VALUES ("%s" , "%s")
    `, email, hash)
© www.soinside.com 2019 - 2024. All rights reserved.