Mysql 将变量传递给GoLang查询

Mysql 将变量传递给GoLang查询,mysql,go,Mysql,Go,首先让我说我是golang的初学者(几天前开始),我正在学习如何实际应用语言。我的目标是构建一个WebRESTAPI,用于查询数据库并向用户返回数据 我已经能够使用martini()成功地创建一个简单的API,并使用连接到MySQL数据库。目前我的问题是如何将变量param从API请求传递到查询中。这是我目前的代码: package main import ( "github.com/go-martini/martini" _ "github.com/go-sql-driver

首先让我说我是golang的初学者(几天前开始),我正在学习如何实际应用语言。我的目标是构建一个WebRESTAPI,用于查询数据库并向用户返回数据

我已经能够使用martini()成功地创建一个简单的API,并使用连接到MySQL数据库。目前我的问题是如何将变量param从API请求传递到查询中。这是我目前的代码:

package main

import (
    "github.com/go-martini/martini"
    _ "github.com/go-sql-driver/mysql"
    "database/sql"
    "fmt"
)

func main() {

  db, err := sql.Open("mysql",
    "root:root@tcp(localhost:8889)/test")

  m := martini.Classic()

  var str string

  m.Get("/hello/:user", func(params martini.Params) string {

  var userId = params["user"] 

  err = db.QueryRow(
      "select name from users where id = userId").Scan(&str)

  if err != nil && err != sql.ErrNoRows {
    fmt.Println(err)
  }

  return "Hello " + str

  })

  m.Run()


  defer db.Close()  

}
正如您所见,我的目标是获取输入变量(user)并将其插入名为userId的变量中。然后我想根据该变量查询数据库以获取名称。一旦一切正常,我想回复用户的名字


有人能帮忙吗?当我继续我的学习之旅时,我将不胜感激

我没用过,但看看这些文件,这就是你想要的吗

db.QueryRow("SELECT name FROM users WHERE id=?", userId)
我认为它应该以sql安全的方式将
替换为
用户ID


正确
是mySQL使用的参数格式,
$1、$2等。
是PostgreSQL格式。OP不应该(永远!)使用参数化以外的任何东西,否则它们会受到SQL注入攻击。谢谢这帮了大忙@elithrar我在上面的示例中是否进行了正确的参数化?var userId=params[“user”]我所说的参数化是在SQL查询中,而不是在Go代码中。您应该阅读以更好地理解我的意思以及为什么要这样做。您可能会发现以下资源在SQL+go冒险中很有用: