2 回答
TA贡献1865条经验 获得超7个赞
您的代码不起作用的原因是因为您使用的是格式化的字符串语法,但没有格式化它。没有参数的原因可能是因为没有使用正确的占位符。尝试将查询包装在格式化程序中,fmt.Sprintf例如:
query := fmt.Sprintf(`SELECT COUNT(*) FROM Users WHERE Id = '%s'`, userID)
row := DB.QueryRow(query)
if err != nil {
return err.Error()
}
你也可以避免fmt.Sprintf。相反,您可以遵循更特定于您正在使用的驱动程序的格式。例如
// For "github.com/go-sql-driver/mysql"
row := DB.QueryRow("SELECT COUNT(*) FROM Users WHERE Id=?", userID)
// For "github.com/mattn/go-sqlite3"
row := DB.QueryRow("SELECT COUNT(*) FROM Users WHERE Id=?", userID)
// For "github.com/lib/pq"
row := DB.QueryRow("SELECT COUNT(*) FROM Users WHERE Id=$1", userID)
TA贡献1802条经验 获得超5个赞
正如该线程中所建议的,您基本上需要在or函数?中用作占位符。所以,上面的查询应该是这样的:QueryQueryRow
row := DB.QueryRow(`SELECT COUNT(*) FROM Users WHERE Id = ? ;`, userID)
if err != nil {
return err.Error()
}
- 2 回答
- 0 关注
- 794 浏览
添加回答
举报