为了账号安全,请及时绑定邮箱和手机立即绑定

SQL 准备语句返回语法错误

SQL 准备语句返回语法错误

Go
慕斯709654 2023-08-14 15:12:53
我正在尝试将传入的表单值插入到 Heroku 上的 PostgreSQL 数据库表中。这是正在使用的 Go 函数:func Insert(w http.ResponseWriter, r *http.Request) {    db := dbConn()    if r.Method == "POST" {        nameo := r.FormValue("name")        typeo := r.FormValue("asslia")        balanceo := r.FormValue("balance")        insForm, err := db.Prepare("INSERT INTO al(name, asslia, balance) VALUES( ? , ? , ? )")        if err != nil {            panic(err.Error())        }        insForm.Exec(nameo, typeo, balanceo)        log.Println("INSERT: Name: " + nameo + " | Type: " + typeo)    }    defer db.Close()    http.Redirect(w, r, "/", 301)}我不断收到pq: syntax error at or near ","该行的错误insForm, err := db.Prepare("INSERT INTO al(name, asslia, balance) VALUES( ? , ? , ? )")该表之前是这样创建的:CREATE TYPE types AS ENUM ('asset', 'liability');CREATE TABLE IF NOT EXISTS al (id SERIAL, asslia TYPES, balance MONEY, name VARCHAR(64) NOT NULL UNIQUE, CHECK (CHAR_LENGTH(TRIM(name)) > 0));我究竟做错了什么?
查看完整描述

1 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

正确的方法是替换 ? 其中 N 是作为额外参数传递给 db.Exec() 的参数的索引

这个新语句不会导致错误:

insForm, err := db.Prepare("INSERT INTO al(name, asslia, balance) VALUES( $1 , $2 , $3 )")


查看完整回答
反对 回复 2023-08-14
  • 1 回答
  • 0 关注
  • 133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信