登录
首页 >  Golang >  Go问答

“运算符不存在:整数=?”使用 Postgres 时

来源:stackoverflow

时间:2024-04-13 18:51:34 241浏览 收藏

你在学习Golang相关的知识吗?本文《“运算符不存在:整数=?”使用 Postgres 时》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

我有一个简单的 sql 查询,在 go 的 database/sql 包提供的 queryrow 方法中调用。

import (
  "github.com/codegangsta/martini"
  "github.com/martini-contrib/render"
  "net/http"
  "database/sql"
  "fmt"
  _ "github.com/lib/pq")
)

type User struct {
  Name string
}

func Show(db *sql.DB, params martini.Params) {
  id := params["id"]
  row := db.QueryRow(
    "SELECT name FROM users WHERE id=?", id)
  u := User{}
  err := row.Scan(&u.Name)
  fmt.Println(err)
}

但是,我收到错误 pq: 运算符不存在:整数 =? 看起来代码不明白 ? 只是一个占位符。我该如何解决这个问题?


解决方案


postgresql 本身使用编号占位符($1$2,...),而不是通常的位置问号。 documentation for the Go interface 还在其示例中使用编号占位符:

rows, err := db.query("select name from users where age = $1", age)

似乎 go 界面并没有像许多界面那样将问号转换为编号占位符,因此问号一直进入数据库并混淆了一切。

您应该能够切换到编号占位符而不是问号:

row := db.QueryRow(
    "SELECT name FROM users WHERE id = $1", id)

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

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