Ruby 将字符串数组合并为一个字符串
我有以下字符串数组:Ruby 将字符串数组合并为一个字符串,ruby,string,Ruby,String,我有以下字符串数组: array = [id, message, date, length] 例如: array = ["1", "test's message", "2016-01-01", "15"] 我想把它合并成一个字符串。我将使用该字符串在DB中插入数据,使用: ActiveRecord::Base.connection.execute 我做到了: result = "(#{array[0}', '#{array[1]}', '#{array[2]}', '#{array[3]
array = [id, message, date, length]
例如:
array = ["1", "test's message", "2016-01-01", "15"]
我想把它合并成一个字符串。我将使用该字符串在DB中插入数据,使用:
ActiveRecord::Base.connection.execute
我做到了:
result = "(#{array[0}', '#{array[1]}', '#{array[2]}', '#{array[3]}')"
消息
包含特殊字符”
(ASCII代码039)。这将导致SQL异常。如何构造包含“
字符的结果
字符串
编辑:
要将数据放入BD,我使用:
conn = ActiveRecord::Base.connection
sql = "INSERT INTO table_name (`id`, `message`, `date`, `length`) VALUES #{result}"
conn.execute sql
编辑:
我使用AR方法修复了此问题:
ActiveRecord::Base.connection.quote(message)
使用Array#join
答案如下:
您基本上将撇号加倍:
“test's message”
您需要像这样转义特殊字符
array = ["1", "test''s message", "2016-01-01", "15"]
您可以使用此代码生成结果
array = ["1", "test's message", "2016-01-01", "15"]
result = "(#{array.map{|s| s.gsub!("'", "''"); "'#{s}'"}.join(",")})"
# => => "('1','test''s message','2016-01-01','15')"
你做错了。2016年左右,一个没有理智的开发人员会通过连接字符串来构造SQL。在哪一点上会引发异常?在加载文件的过程中?在生成字符串的过程中?在SQL查询过程中?
您做错了。在2016年左右,没有一个头脑清醒的开发人员会通过连接字符串来构造SQL。
为什么?我需要表现。我想使用原始SQL将数据放入数据库。我不需要AR,因为我有经过验证的数据,我不害怕依赖注入,因为这是一项简单的背景工作。告诉我为什么。我有大量的数据,使用普通sql时,会在哪一点引发异常?在加载文件的过程中?在生成字符串的过程中?在SQL查询期间?异常被引发,因为消息字符串中有“
字符。这就是为什么我要问如何将字符串与特殊字符合并。您不需要异常消息。无法复制。未引发错误,因为消息字符串中存在“
。
array = ["1", "test's message", "2016-01-01", "15"]
result = "(#{array.map{|s| s.gsub!("'", "''"); "'#{s}'"}.join(",")})"
# => => "('1','test''s message','2016-01-01','15')"