在MYSQL数据库中搜索Rails 2.3.14应用程序时,我需要适当地转义搜索字符串,以便搜索包含单引号(撇号)的字符串。最好的方法是什么?我正在使用mysql
宝石,以防万一。
答案 0 :(得分:8)
使用mysql
gem时,您获得方法Mysql.escape_string()
。使用方法如下:
search_terms = Mysql.escape_string("it's working!")
conditions = [ "table1.name LIKE '%#{search_terms}%'" ]
# use conditions for MYSQL query as appropriate
答案 1 :(得分:8)
Rails quotes strings如下:
# Quotes a string, escaping any ' (single quote) and \ (backslash) characters.
def quote_string(s)
s.gsub(/\\/, '\&\&').gsub(/'/, "''") # ' (for ruby-mode)
end
答案 2 :(得分:5)
您可以使用ActiveRecord的quote
方法(例如ActiveRecord::Base.connection.quote("string with ' apostrophe")
),但ActiveRecord的查询方法已经为您转义了SQL。例如:
a = "string with ' apostrophe"
ModelName.where("field1 = ?", a)
将更改"字符串'撇号" to" string''撇号"