为了账号安全,请及时绑定邮箱和手机立即绑定

恐慌:sql:预期 0 个参数,得到 1 个

恐慌:sql:预期 0 个参数,得到 1 个

Go
天涯尽头无女友 2023-06-26 16:35:15
我正在尝试使用 Go 执行查询,但我无法请求任何查询,因为它不断地给我同样的错误。我已经多次更改查询,但这似乎没有帮助。另外,我还更改了 Query 中的 QueryRow,不幸的是这也没有帮助。func test123() {    db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/vitaintellectdb")    if err != nil {        panic(err.Error())    }    id := 1    var col string    sqlStatement := `SELECT naam FROM medewerker WHERE naam="jansen"`    row := db.QueryRow(sqlStatement, id)    err2 := row.Scan(&col)    if err2 != nil {        if err2 == sql.ErrNoRows {            fmt.Println("Zero rows found")        } else {            panic(err2)        }    }}QueryRow 旨在返回 1 行。不幸的是,错误告诉我不应该有返回,我期望返回 1 行。
查看完整描述

2 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

该错误告诉您您正在向QueryRow它传递一个不符合预期的参数。

您的 SQL 语句没有任何占位符,因此不需要任何占位符,但您给它之一id。只是改变:

row := db.QueryRow(sqlStatement, id)

到:

row := db.QueryRow(sqlStatement)


查看完整回答
反对 回复 2023-06-26
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

sqlStatement := `SELECT naam FROM medewerker WHERE naam="jansen"`
row := db.QueryRow(sqlStatement, id)

给定的sql语句没有参数。以下包含占位符的 sql 语句可能效果更好。

sqlStatement := `SELECT naam FROM medewerker WHERE medewerkernummer =?`
row := db.QueryRow(sqlStatement, id)

根据您的id-column 的命名方式,您可能必须更改naam=?idColumn=?


查看完整回答
反对 回复 2023-06-26
  • 2 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信