首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法连接到XAMPP MySQL

无法连接到XAMPP MySQL
EN

Stack Overflow用户
提问于 2015-06-10 15:38:40
回答 1查看 955关注 0票数 0

我是新来的。我正在尝试在Go中使用MySQL。我已经安装了XAMPP,它有Apache和MySQL。我还使用了database/sql包和github.com/go-sql-driver/mysql驱动程序。

我找不出错误所在。我使用的是LiteIDE,它没有显示任何错误,但是记录没有插入到我的数据库中。

我的代码是:

代码语言:javascript
运行
复制
// RESTAPI project main.go
package main

import (
    "database/sql"
    "encoding/json"
    "fmt"
    "log"
    "net/http"

    _ "github.com/go-sql-driver/mysql"

    "github.com/gorilla/mux"
)

type API struct {
    Message string "json:message"
}
type User struct {
    ID    int    "json:id"
    Name  string "json:username"
    Email string "json:email"
    First string "json:first"
    Last  string "json:last"
}

func CreateUser(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln("Create file")
    NewUser := User{}
    NewUser.Name = r.FormValue("user")
    NewUser.Email = r.FormValue("email")
    NewUser.First = r.FormValue("first")
    NewUser.Last = r.FormValue("last")
    output, err := json.Marshal(NewUser)
    fmt.Println(string(output))
    if err != nil {
        fmt.Println("Something went wrong!")
    }
    dsn := "root:password@/dbname"
    db, err := sql.Open("mysql", dsn)
    sql := "INSERT INTO users set user_nickname='" + NewUser.Name + "', user_first='" + NewUser.First + "', user_last='" + NewUser.Last + "', user_email='" + NewUser.Email + "'"
    q, err := db.Exec(sql)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(q)
    fmt.Println("User is created")
}

func main() {
    routes := mux.NewRouter()
    routes.HandleFunc("/api/user/create", CreateUser).Methods("GET")
    http.ListenAndServe(":8080", nil)
}
EN

回答 1

Stack Overflow用户

发布于 2015-06-11 06:47:43

正如汤姆提到的,您应该在sql.Open之后检查错误:

代码语言:javascript
运行
复制
    db, err := sql.Open("mysql", dsn)
    if err != nil {
        log.Fatal(err)
    }

PS。切勿在SQL中使用字符串连接。

为了防止SQL注入,您应该使用预准备语句:

代码语言:javascript
运行
复制
    sql := "INSERT INTO users set user_nickname='?', user_first='?', user_last='?', user_email='?'"
    q, err := db.Exec(sql, NewUser.Name, NewUser.First, NewUser.Last, NewUser.Email)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30750032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档