mysql - 无法连接到 XAMPP MySQL

标签 mysql sql database go xampp

我是 Go 的新手。 我正在尝试将 MySQL 与 Go 一起使用。 我已经安装了具有 Apache 和 MySQL 的 XAMPP。 我也在使用 database/sql 包和 github.com/go-sql-driver/mysql 驱动程序。

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

我的代码是:

// 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)
}

最佳答案

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

    db, err := sql.Open("mysql", dsn)
    if err != nil {
        log.Fatal(err)
    }

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

要防止 SQL 注入(inject),您应该使用准备好的语句:

    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)

关于mysql - 无法连接到 XAMPP MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30750032/

相关文章:

php - 使用插入值数组执行准备好的语句不起作用

database - 在关系数据库的表中建模递归关系的最佳实践

mysql - 查询不完整 - MYSQL

Mysql全文搜索加号

python - 错误 2006 : "MySQL server has gone away" using Python, Bottle Microframework 和 Apache

php - 由于 md5 导致数据库中存在空白字段?

c# - 如何在用于 SQL 插入的方法中进行参数化查询?

mysql - 插入行时的竞争条件

Mysql使用从最小时间戳中选择的行减去值,按id分组

sql - 单击时如何从 Column(0) 中的列表框中引用值?