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')"