gpt4 book ai didi

sql - 带有 select_all 的 Rails 准备好的语句

转载 作者:行者123 更新时间:2023-12-03 15:04:09 27 4
gpt4 key购买 nike

据我所知,应该可以在 Rails 中执行以下操作:

ActiveRecord::Base.connection.select_all("SELECT MONTH(created) AS month, YEAR(created) AS year FROM orders WHERE created>=$1 AND created<=$2 GROUP BY month ORDER BY month ASC",nil,[['created',1],['created',2]])

但可悲的是,这根本不起作用。无论我尝试使用什么格式, $1$2永远不会被绑定(bind)数组中的相应值替换。

我还有什么需要注意的吗?

最佳答案

您应该使用 sanitize_sql_array在你的模型中,像这样:

r = self.sanitize_sql_array(["SELECT MONTH(created) AS month, YEAR(created) AS year FROM orders WHERE created>=? AND created<=? GROUP BY month ORDER BY month ASC", created1, created2])
self.connection.select_all r

这可以保护您免受 SQL 注入(inject)。

关于sql - 带有 select_all 的 Rails 准备好的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12755969/

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