質問: "GET"{ t, _ := template.ParseFiles("tmpl/login.gtpl") t.Execute(w, nil) }else{ r.ParseForm() fmt.Println("name:", template.HTMLEscapeString(r.Form.Get("name"))) fmt.Println("cardnum:",template.HTMLEscapeString(r.Form.Get("cardnum"))) fmt.Println("seminar:",template.HTMLEscapeString(r.Form.Get("seminar"))) fmt.Println("password:", template.HTMLEscapeString(r.Form.Get("password"))) template.HTMLEscape(w, []byte(r.Form.Get("username"))) } } func insert(db *sql.DB) { query := "INSERT INTO student values(null, ?, ?, ?, ?)" result, err := db.Exec(query,"name","cardnum", "seminar", "password") if err != nil { log.Fatal("insert error: ", err) } if lastId, lerr := result.LastInsertId(); lerr != nil { // unsupport... fmt.Println("insert last id: %d", lastId) } } func getDB()(db *sql.DB) { db, err := sql.Open("mysql", "root:passwprd@/dbname") if err !=nil{ log.Fatal("open error: %v", err) } return db } func main() { fmt.Println("** mysql start **") db := getDB() insert(db) defer db.Close() fmt.Println("** mysql end **") //http.HandleFunc("/", sayhelloName) http.HandleFunc("/", login) err := http.ListenAndServe(":3000", nil) if err != nil{ log.Fatal("ListenAndServe:",err) } } login.gtpl 名前: 学籍番号: 所属ゼミ: パスワード: ``` ### 試したこと 課題に対してアプローチしたことを記載してください valueの部分や、execの部分を変えてみた。 他のinsertの仕方も試してはみたがダメだった。 ### 補足情報(言語/FW/ツール等のバージョンなど) より詳細な情報
回答: go言語については詳しくないのですが、 SQLは > > INSERT INTO student values(null, ?, ?, ?, ?); > > > ではないかなと思います。 DBの制約などに引っかかっていないか確認してください。 DB関係でひっかかる場合は、言語を通さずmysqlに直接ログインし、想定されるinsert文を直接発行した方がわかりやすいかと思います。 あと POSTしている値のkeyがnameで、受け取ろうとしている値のkeyがsnameというものになっているようですが・・・?