dongqing4774 2016-05-14 08:27
浏览 49
已采纳

数据无法保存在我的数据库中

I have my website and it can write something . Then my service can get this data and save in my database, but it is not working for me. I tried some steps and it seems that can transmission string to dab(),but it can't save anything in my database.

Error log:

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 snippet:

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:123456@/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)
    }
}

How can I fix it?

  • 写回答

1条回答 默认 最新

  • dongzhong6675 2016-05-14 13:53
    关注

    You are passing a slice of strings to something that does not handle it. Try extracting title and main by using r.Form.Get instead and then pass those to your prepared statement.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 找一个网络防御专家,外包的
  • ¥100 能不能让两张不同的图片md5值一样,(有尝)
  • ¥15 informer代码训练自己的数据集,改参数怎么改
  • ¥15 请看一下,学校实验要求,我需要具体代码
  • ¥50 pc微信3.6.0.18不能登陆 有偿解决问题
  • ¥20 MATLAB绘制两隐函数曲面的交线
  • ¥15 求TYPCE母转母转接头24PIN线路板图
  • ¥100 国外网络搭建,有偿交流
  • ¥15 高价求中通快递查询接口
  • ¥15 解决一个加好友限制问题 或者有好的方案