我被困在根据某些条件将参数传递给Exec函数的过程中。我用谷歌搜索,但是找到了使用args := []interface{}{var1, var2, ... varN}的MySQL解决方案。

但是我下面的PostgreSQL问题是我的条件查询:

strQry := `UPDATE core_channel SET title = $1, description = $2, `

if updateChannelReq.FeaturedVideo != 0 {
    strQry += `default_video_id = $3, `
}

strQry += ` original_keywords = $4, banner_link = $5 WHERE create_user_id = $6`

这里是我传递参数以执行此查询的方法:
args := []interface{}{
        updateChannelReq.Title,
        updateChannelReq.Description,
    }

if updateChannelReq.FeaturedVideo != 0 {
    args = append(args, updateChannelReq.FeaturedVideo)
}

args = []interface{}{
    updateChannelReq.OriginalKeyWords,
    updateChannelReq.BannerLink,
    AuthUserID,
}

_, err = stmt.Exec(args...)

但是我得到了错误:
pq: could not determine data type of parameter $3

请帮助我如何处理这些事情。
谢谢。

最佳答案

在创建查询字符串时,通过使用else条件跳过第三列来更改条件。

strQry := `UPDATE core_channel SET title = $1, description = $2, `

if updateChannelReq.FeaturedVideo != 0 {
    strQry += `default_video_id = $3, original_keywords = $4, banner_link = $5 WHERE create_user_id = $6 `
} else {
    strQry += ` original_keywords = $3, banner_link = $4 WHERE create_user_id = $5`
}

10-08 14:01