我正在尝试使用ruby从mysql获取变量,但是当我得到变量并使用puts在控制台中显示它时,它读取变量而没有引号等等,但是当我试图在其他地方调用变量(如username = "#{dev_test1}" )时,我得到了一个类似于这个[["variable called from database"]]的输出,我只想得到一个变量,我可以在一个没有[[""]]的字符串中使用它。下面是我使用的代码
require "mysql2"
client = Mysql2::Client.new(:host => "localhost", :username => "root", :password => "", :database =>"test")
test_query1 = client.query("SELECT test1 FROM accounts LIMIT 1").each(:as => :array)
dev_test1 = test_query1.each { | row | }
puts dev_test1
test_query2 = client.query("SELECT test2 FROM accounts LIMIT 1").each(:as => :array)
dev_test2 = test_query2.each { | row | }
puts dev_test2
username = "#{dev_test1}"
password = "#{dev_test2}"
puts username
puts password发布于 2014-04-15 01:18:22
在您的代码中可以清理一些东西,但我将看看为什么您在终端和实际代码中得到了两个不同的答案。
在Ruby中,puts和#{variable}不是一回事。如果传递了数组,puts实际上会通过去掉数组将值更改为可读的字符串。这就去掉了括号。
字符串插值(#{variable})相当于对变量调用.to_s。这将将数组转换为一个括号完整的字符串。因此,当您调用puts时,密码已保存为字符串,puts将显示为原样、括号和所有内容。
所以
password = "#{array}" #==> "[[array_contents]]"
puts password #==> "[[array_contents]]"鉴于
puts array #==> "array_contents"https://stackoverflow.com/questions/23072854
复制相似问题