sql查询中的Ruby串接字符串

sql查询中的Ruby串接字符串,sql,ruby,json,string,mysql2,Sql,Ruby,Json,String,Mysql2,我得到以下输出 INSERT INTO AIRPORTS VALUES(null, #{iata} , #{latitude} , #{longitude}, #{name}, #{city})airportsScript.rb:27:in `query': You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right synta

我得到以下输出

INSERT INTO AIRPORTS VALUES(null, #{iata} , #{latitude} , #{longitude}, #{name}, #{city})airportsScript.rb:27:in `query': You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 (Mysql2::Error)
    from airportsScript.rb:27:in `block in getAirports'
    from airportsScript.rb:20:in `each'
    from airportsScript.rb:20:in `getAirports'
    from airportsScript.rb:32:in `<main>'
您可能会注意到,在输出中,第一行来自print
“INSERT INTO AIRPORTS VALUES(null、#{iata}、#{latitude}、#{longitude}、#{name}、#{city})”
为什么我不能得到iata、latitude、long等变量的值,而不是真正的字符串“#{iata}”

我是ruby新手,顺便说一句,这是我的第一个脚本。

使用“双引号”而不是“单引号”来插入变量

2.0.0-p353 :001 > var = "foo"
 => "foo" 
2.0.0-p353 :002 > 'Hello #{var}'
 => "Hello \#{var}" 
2.0.0-p353 :003 > "Hello #{var}"
 => "Hello foo" 

我不知道您使用此脚本的目的是什么,但这样构造SQL查询是非常不安全的。您很容易出现SQL注入和其他问题。我只会用大量航班数据填充数据库,只填充一次。如果只填充一次,则无所谓。您应该正确地引用和转义字符串。或者更好的是,mysql2不可能完全被破坏和无用到在查询中不支持某种占位符的地步,使用它们吧。我会做这项研究的,谢谢你。显然是这样,似乎根本没有任何占位符支持。哇!至少有一种方法。
2.0.0-p353 :001 > var = "foo"
 => "foo" 
2.0.0-p353 :002 > 'Hello #{var}'
 => "Hello \#{var}" 
2.0.0-p353 :003 > "Hello #{var}"
 => "Hello foo"