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

如何修复多值 stmt.Query() 在单值上下文中

如何修复多值 stmt.Query() 在单值上下文中

Go
30秒到达战场 2022-08-24 10:43:29
我通过下面的代码面临上述问题    stmt, err2 := db.Prepare( "SELECT COUNT(*) FROM  xyz WHERE product_id=? and chart_number=?")     rows, err2 := stmt.Query( bidStatusReqVal.ProductId,bidStatusReqVal.ChartNumber).Scan(&count)
查看完整描述

1 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

Query(...).Scan(...)无效,因为返回两个值,并且调用链接要求前一个调用仅返回一个值。呼叫返回的 ,或仅将 with 用作返回目的地。QueryScanrowsQueryRow(...).Scan(...)err


rows, err := stmt.Query(bidStatusReqVal.ProductId, bidStatusReqVal.ChartNumber)

if err != nil {

    return err

}

defer rows.Close()


for rows.Next() {

    if err := rows.Scan(&count); err != nil {

        return err

    }

}

if err := rows.Err(); err != nil {

    return err

}


// ...

在查询仅返回单个行的情况下,例如 ,或者如您的情况,使用 会更方便。SELECT ... LIMIT 1SELECT COUNT(*) ...QueryRow


err := stmt.QueryRow(bidStatusReqVal.ProductId, bidStatusReqVal.ChartNumber).Scan(&count)

if err != nil {

    return err

}


// ...


查看完整回答
反对 回复 2022-08-24
  • 1 回答
  • 0 关注
  • 66 浏览
慕课专栏
更多

添加回答

举报

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