#mysql #ruby
#mysql #ruby
Вопрос:
require 'os'
require 'socket'
require 'mysql2'
require 'etc'
require 'time'
def getBits
return OS.bits.to_s
end
def getPCName
return Socket.gethostname
end
def getUser
return Etc.getlogin
end
info = Hash["SYSBITS " => getBits,"PCN " => getPCName,"USER " => getUser]
for h in info.keys
print h.chomp
end
for b in info.values
print b.chomp
end
connection = Mysql2::Client.new(:host => "localhost", :username => "root",:password => "",:database => "ruby")
result = connection.query("INSERT INTO `mydata`(`#{h}`) VALUES ('#{b}')")
Итак, идея здесь состоит в том, чтобы сделать хэш возвращаемой информации, а затем использовать хэш-ключи в качестве столбцов и хэш-значения в виде строк в запросе mysql, но это не работает.
Я добавил разделение вручную, потому что не вижу другого способа.
Это ошибка, которую я получаю:
_query': Unknown column 'USER ' in 'field list' (Mysql2::Error)
Комментарии:
1. Не забывайте использовать значения-заполнители и избегать интерполяции строк, которая создает ошибки SQL-инъекций .
2. Почему после ввода ПОЛЬЗОВАТЕЛЯ есть пробел
'USER '
?3. можете ли вы вывести строковое значение запроса, прежде чем пытаться его передать?
4. Как называются столбцы в базе данных? Действительно ли они все upcase?