【发布时间】:2021-06-21 00:06:12
【问题描述】:
我是 ruby 新手,关注 this 博客修复 sql 注入错误,但我的查询出错。
原始查询:
class Car < ActiveRecord::Base
...
has_one :Driver, lambda {
where(status: PASSENGER_STATUS, connected_number: [phone, mobile])
.order("FIELD (`classDummy`.`status`, #{PASSENGER_STATUS.join(', ')}")
}, class_name: :classDummy
而 PASSENGER_STATUS 是(在其他类中)
PASSENGER_STATUS = [
'employed','temporary'
].freeze
我做了 SQL INJECTION 修复
order("FIELD (`classDummy`.`status`, ? )", PASSENGER_STATUS.join(', '))
但这会在执行查询时抛出异常。
我得到的例外:
ActiveRecord::StatementInvalid: Mysql2::Error: 你的 SQL 语法有错误;检查与您的 MySQL 对应的手册 在 '?,
附近使用正确语法的服务器版本
【问题讨论】:
-
什么异常?
-
@Geoffroy :添加了有问题的异常。
标签: ruby-on-rails ruby sql-injection