【问题标题】:How to set where clause dynamically in GORM如何在 GORM 中动态设置 where 子句
【发布时间】:2019-10-23 14:34:58
【问题描述】:

我将收到map[string][]string。对于地图中的每个键,我想添加如下所示的 where 子句。

inFilter := map[string][]string{"product_id": []string{"3", "69"}}
for key, value := range inFilter {
        filterQuerable = filterQuerable.Where("(?) IN (?)", key, value)
    }

它不起作用。我尝试了以下方法也不起作用

filterQuerable = filterQuerable.Where("(?) IN (?)", "product_id", []string{"3", "69"})

只有下面的代码有效

filterQuerable = filterQuerable.Where("product_id IN (?)",  []string{"3", "69"})

【问题讨论】:

    标签: sql go go-gorm


    【解决方案1】:

    我现在看到了问题。 ? 用于值,而不是列名。如果您可以 100% 信任输入的来源,那么简单的字符串替换将起作用。如果您允许来自用户的数据,那么您应该非常小心并验证/清理列名。

    这应该可行。

    inFilter := map[string][]string{"product_id": []string{"3", "69"}}
    for key, value := range inFilter {
       filterQuerable = filterQuerable.Where(key + " IN (?)", value)
    }
    

    【讨论】:

    • “还是不行。”你有可以产生的错误吗?我现在看到了问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多