gpt4 book ai didi

mysql - Rails根据需求查询条件

转载 作者:行者123 更新时间:2023-11-29 10:35:59 27 4
gpt4 key购买 nike

我有一个要求,我需要根据需求执行查询。在我的代码中,我有一个名为 order_type 的参数。如果 order_type 是“current_day”,我需要触发查询

[order_date = ? and user_id = ? and country_id = ?, @order_date, @user_id, @country_id]

如果 order_type 是“过去”,我需要执行

[order_date < ? and user_id = ? and country_id = ?, @order_date, @user_id, @country_id]

我不想在此处添加 if else,因为我还有几个查询正在根据 order_type 字段进行过滤。我添加了一个变量@comparator,如果 order_type 是旧的,则将其设置为“<”;如果 order_type 是当前的,则将其设置为“=”,并进行如下查询。

[order_date "+@comparator+" ? and user_id = ? and country_id = ?, @order_date, @user_id, @country_id]

但是,这会造成 SQL 注入(inject)威胁。请让我知道处理此问题的最佳方法是什么。

提前致谢。

最佳答案

@comparator 将保存值 ['>'、'<'、'=' 等] 之一

因此编写方法,该方法将检查比较器应该是您在数组中提到的值之一。如果方法返回 true,则继续您的查询,否则拒绝它。

像这样。

def comparator(comparator)
arr_set = ['>', '=']
arr_set.include?(comparator)
end


if comparator(@comparator)
execute_query
else
# throw error or do somthing
end

这将防止 sql 注入(inject)

关于mysql - Rails根据需求查询条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46421843/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com