登录
首页 >  Golang >  Go问答

SQL错误:参数数目不匹配

来源:stackoverflow

时间:2024-02-24 15:27:25 428浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《SQL错误:参数数目不匹配》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质性的提高。

问题内容

我正在尝试使用 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 行。


解决方案


该错误告诉您,您正在向 queryrow 传递一个它不期望的参数。

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

row := db.queryrow(sqlstatement, id)

至:

row := db.queryrow(sqlstatement)

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 列的命名方式,您可能需要将 naam=? 更改为 idcolumn=?。在示例 here 中您可能会找到灵感。

好了,本文到此结束,带大家了解了《SQL错误:参数数目不匹配》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>