8

在 MYSQL 数据库中搜索 Rails 2.3.14 应用程序时,我需要适当地转义搜索字符串,以便搜索包含单引号(撇号)的字符串。最好的方法是什么?我正在使用mysql宝石,以防万一。

4

3 回答 3

10

Rails引用字符串如下:

# Quotes a string, escaping any ' (single quote) and \ (backslash) characters.
def quote_string(s)
  s.gsub(/\\/, '\&\&').gsub(/'/, "''") # ' (for ruby-mode)
end
于 2013-08-07T18:14:04.887 回答
8

使用mysql宝石时,您将获得方法Mysql.escape_string()。使用如下:

search_terms = Mysql.escape_string("it's working!")
conditions = [ "table1.name LIKE '%#{search_terms}%'" ]
# use conditions for MYSQL query as appropriate
于 2012-07-20T14:53:53.813 回答
6

您可以使用 ActiveRecord 的quote方法(例如ActiveRecord::Base.connection.quote("string with ' apostrophe")),但 ActiveRecord 的查询方法已经为您转义了 SQL。例如:

a = "string with ' apostrophe"
ModelName.where("field1 = ?", a)

将“带有'撇号的字符串”更改为“带有''撇号的字符串”

于 2012-07-21T05:29:17.183 回答