Я думаю, что я глуп.
rc = Mysql.new('CENSORED_HOST','username','password','db')
release = rc.query('select * from wp_ribcage_releases where release_id = 1 limit 1')
puts release["release_title"]
rc.close
И я получаю следующую ошибку:
ribcage-connect.rb:17: undefined method `[]' for #<Mysql::Result:0x1011ee900> (NoMethodError)
Я новичок в этом, и я уверен, что в основном делаю что-то очень глупое. Большое спасибо.
ИЗМЕНИТЬ
Добрые люди внизу получили меня, но дальше, теперь у меня есть:
rc = Mysql.new('server','user','pword','db')
release = rc.query('select * from wp_ribcage_releases where release_id = 1 limit 1')
row = release.fetch_row
puts row['release_title']
rc.close
И теперь я получаю сообщение об ошибке:
ribcage-connect.rb:12:in `[]': can't convert String into Integer (TypeError)
from ribcage-connect.rb:12
rc.query(...)
возвращает набор результатов, который вы можете выполнять итерацией. Вы не можете напрямую обращаться к нему.
Посмотрите:
http://www.kitebird.com/articles/ruby-mysql.html#TOC_7
Поскольку у вас есть только одна строка (из-за LIMIT 1), вы можете сделать:
row = release.fetch_hash
puts row['release_title']
Если у вас несколько строк:
while row = release.fetch_hash do
puts row["release_title"]
end
Эта ошибка означает, что вы не можете индексировать напрямую (используйте []) объект Result.
Вместо этого он должен быть (для этого случая с одной строкой):
row = release.fetch_hash
puts row["release_title"]
Для получения дополнительной информации: перейти сюда