Ruby on rails RubyonRails 2.3类SQL查询
我能够在Rails 2.3中执行类似查询的唯一方法是:Ruby on rails RubyonRails 2.3类SQL查询,ruby-on-rails,Ruby On Rails,我能够在Rails 2.3中执行类似查询的唯一方法是: access_points.all(:conditions => "mac_address LIKE '%#{@q}%'") 官方文档指出,这种方法是不安全的,因为受SQL注入的影响: 将自己的条件构建为纯字符串会使您容易受到SQL注入攻击。例如,Client.first(:conditions=>“类似于“%”#{params[:name]}%')的名称)是不安全的。有关使用数组处理条件的首选方法,请参见下一节。 但不幸的是,它
access_points.all(:conditions => "mac_address LIKE '%#{@q}%'")
官方文档指出,这种方法是不安全的,因为受SQL注入的影响:
将自己的条件构建为纯字符串会使您容易受到SQL注入攻击。例如,Client.first(:conditions=>“类似于“%”#{params[:name]}%')的名称)是不安全的。有关使用数组处理条件的首选方法,请参见下一节。
但不幸的是,它并没有解释如何正确地进行LIKE查询,而且我还没有在谷歌上找到它,因为LIKE是一个非常通用的关键字
有什么提示吗?我是Rails新手,但我对Symfony和Django有经验。这就是您想要的方式:
:conditions => ['mac_address LIKE ?', "%#{@q}%"]
这是您想要的方式:
:conditions => ['mac_address LIKE ?', "%#{@q}%"]
奥斯卡是对的。一些解释。正如Oscar所示,您必须使用rails sql查询过滤。因此,您将“like?”放在sql语句中,并将搜索字符串(使用ruby代码)放在sql语句之外。Rails将接管并正确清理搜索字符串
还要记住,如果查询Postgres,它默认为区分大小写的查询,但也有一个不区分大小写的ilike。这已经让我在一些场合 奥斯卡是对的。一些解释。正如Oscar所示,您必须使用rails sql查询过滤。因此,您将“like?”放在sql语句中,并将搜索字符串(使用ruby代码)放在sql语句之外。Rails将接管并正确清理搜索字符串
还要记住,如果查询Postgres,它默认为区分大小写的查询,但也有一个不区分大小写的ilike。这已经让我在一些场合 使用
?
语法并将条件放入数组中。搜索“rails 3 like query”会返回多个点击,其中包括哪个点击。使用?
语法并将条件放入数组中。搜索“Rails3likequery”会返回多个点击,包括哪一个。说明此处不应在数组的第二部分使用字符串转义。这就是您试图使用数组语法避免的部分。你想要的是:条件=>['mac\u address LIKE?',@q]
。说明此处不应在数组的第二部分使用字符串转义。这就是您试图使用数组语法避免的部分。你想要的是:条件=>['mac\u address LIKE?',@q]
。