亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 180 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號