2 回答

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
您的代碼不起作用的原因是因?yàn)槟褂玫氖歉袷交淖址Z(yǔ)法,但沒有格式化它。沒有參數(shù)的原因可能是因?yàn)闆]有使用正確的占位符。嘗試將查詢包裝在格式化程序中,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。相反,您可以遵循更特定于您正在使用的驅(qū)動(dòng)程序的格式。例如
// 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貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
正如該線程中所建議的,您基本上需要在or函數(shù)?中用作占位符。所以,上面的查詢應(yīng)該是這樣的:QueryQueryRow
row := DB.QueryRow(`SELECT COUNT(*) FROM Users WHERE Id = ? ;`, userID)
if err != nil {
return err.Error()
}
- 2 回答
- 0 關(guān)注
- 869 瀏覽
添加回答
舉報(bào)