2016-05-14 12 views
0

Ich habe meine Website und es kann etwas schreiben. Dann kann mein Dienst diese Daten erhalten und in meiner Datenbank speichern, aber es funktioniert nicht für mich. Ich habe einige Schritte versucht und es scheint, dass Übertragungsstring zu dab(), aber es kann nichts in meiner Datenbank speichern.Daten können nicht in meiner Datenbank gespeichert werden

Fehlerprotokoll:

2016/05/14 08:02:08 http: panic serving 14.146.246.141:64540: sql: converting argument #0's type: unsupported type 
[]string, a slice 
goroutine 5 [running]: 
net/http.(*conn).serve.func1(0xc8200b4f20, 0x7f8b9f86c6c8, 0xc820024038) 
    /usr/lib/golang/src/net/http/server.go:1287 +0xb5 
main.checkErr(0x7f8b9f867028, 0xc82000b4a0) 
    /home/Mario/a.go:50 +0x4b 
main.dab(0xc82000b360, 0x1, 0x1, 0xc82000b370, 0x1, 0x1) 
    /home/Mario/a.go:41 +0x306 
main.handle(0x7f8b9f86c848, 0xc8200b5550, 0xc8200de2a0) 
    /home/Mario/a.go:28 +0x4a7 
net/http.HandlerFunc.ServeHTTP(0x876a90, 0x7f8b9f86c848, 0xc8200b5550, 0xc8200de2a0) 
    /usr/lib/golang/src/net/http/server.go:1422 +0x3a 
net/http.(*ServeMux).ServeHTTP(0xc820012930, 0x7f8b9f86c848, 0xc8200b5550, 0xc8200de2a0) 
    /usr/lib/golang/src/net/http/server.go:1699 +0x17d 
net/http.serverHandler.ServeHTTP(0xc820016120, 0x7f8b9f86c848, 0xc8200b5550, 0xc8200de2a0) 
    /usr/lib/golang/src/net/http/server.go:1862 +0x19e 
net/http.(*conn).serve(0xc8200b4f20) 
    /usr/lib/golang/src/net/http/server.go:1361 +0xbee 
created by net/http.(*Server).Serve 
    /usr/lib/golang/src/net/http/server.go:1910 +0x3f6 

-Code-Schnipsel:

package main 

import (
    "net/http" 
    "log" 
    "fmt" 
    "html/template" 
    _ "github.com/go-sql-driver/mysql" 
    "database/sql" 
) 

func Mai(w http.ResponseWriter, r *http.Request){ 
     t, _ := template.ParseFiles("a.js") 
     t.Execute(w, nil) 
} 

func FormServer(w http.ResponseWriter, r *http.Request){ 
     t, _ := template.ParseFiles("an.html") 
     t.Execute(w, nil) 
} 

func handle(w http.ResponseWriter, r *http.Request){ 
     r.ParseForm() 
     fmt.Println("title:", r.Form["title"]) 
     fmt.Println("main:", r.Form["main"]) 
     a := r.Form["title"] 
     b := r.Form["main"] 
     dab(a , b) 
     // t, _ := template.ParseFiles("finish.html") 
     // t.Execute(w, nil) 
} 

func dab(a , b []string){ 
    db, err := sql.Open("mysql", "root:[email protected]/xiaoyou?charset=utf8") 
    checkErr(err) 
    stmt, err := db.Prepare("INSERT talk SET title=?,main=?") 
    checkErr(err) 
    res, err := stmt.Exec(a , b) 
    checkErr(err) 
    id, err := res.LastInsertId() 
    checkErr(err) 
    fmt.Println(id) 
    db.Close() 
} 

func checkErr(err error) { 
    if err != nil { 
     panic(err) 
    } 
} 

func main() { 
    http.HandleFunc("/",Mai) 
    http.HandleFunc("/login", FormServer) 
    http.HandleFunc("/submit",handle) 
    err := http.ListenAndServe(":80", nil) 
    if err != nil { 
     log.Fatal("ListenAndServe:",err) 
    } 
} 

Wie kann ich es beheben?

+0

nach dem Öffnen, einen Ping zu überprüfen, ob die Datenbank verbunden ist: err: = db.Ping() – Fantasim

Antwort

0

Sie übergeben ein Stück Strings an etwas, das nicht damit umgehen kann. Versuchen Sie, title und main zu extrahieren, indem Sie stattdessen r.Form.Get verwenden und diese dann an Ihre vorbereitete Anweisung übergeben.

+0

thanks.it kann für mich arbeiten! –

Verwandte Themen