我被困在根据某些条件将参数传递给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`
}