我在rails 4应用程序上有以下代码
query= OrderHeader.select("orders_header.id,
orders_header.created_at").where("shop_id=#{shop_id} and
customer_id=#{customer_id} and hash_key like
'#{current_hash_key}'").order("id desc")
if query.nil?
return true # no duplicates found
end
if (query.count>0) # duplicates found
#nothing
end
我收到了错误
ERROR
SELECT COUNT(orders_header.id,orders_header.created_at)FROM
orders_header
WHERE(shop_id = 99,customer_id = 1,hash_key喜欢 '539de64e8793790430052bc861dd0ff521334e32')Mysql2 ::错误:您的SQL语法中有错误;检查手册 对应于您的MySQL服务器版本,以获得正确的语法 在'orders_header.created_at)FROM
orders_header
WHERE附近使用 (shop_id = 99和第1行的customer_':SELECT COUNT(orders_header.id, orders_header.created_at)FROMorders_header
WHERE(shop_id = 99和 customer_id = 1和hash_key之类的 '539de64e8793790430052bc861dd0ff521334e32')
答案 0 :(得分:0)
您最近是否已升级到rails 4.1?在这种情况下,它可能是https://github.com/rails/rails/issues/15138
中提到的已知问题答案 1 :(得分:0)
你需要在字符串中使用复数形式的表名,orders_headers.id
而不是orders_header.id
,等等,也为了避免sql注入,你应该使用传递给字符串的params而不是你的params在字符串中,例如:
where("shop_id=?", shop_id)
所以要清理整个where语句,这可能是这样的
where(shop_id: shop_id, customer_id: customer_id).where("hash_key like '?'",current_hash_key)