无法在Ruby Mysql中的表中插入值

时间:2013-04-13 21:12:18

标签: mysql ruby

我正在尝试使用Ruby在localhost上将值插入MySQL。我要插入的值是Twitter搜索的结果。我的程序可以成功地将结果写入文件,所以现在我想将结果插入MySQL。这是我的代码的一部分:

results = @search.perform("yahoo", 100)
client = Mysql2::Client.new(:host => "localhost", :username => "root", :password => "123", :database => "db1")
results.map do |status|
insert = client.query ("INSERT INTO table1 (fromuser, tweet) VALUES (#{status.from_user},#{status.text})")
end

错误是“您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以便在第1行(Mysql2 :: Error)附近的”tweet“附近使用正确的语法。
是什么原因造成的?

我发现的另一个问题是,当我使用下面的代码向MySQL插入值时,我得到了另一个错误:“字段列表中的未知列'a'(Mysql :: ServerError :: BadFieldError)”

require 'mysql'
require 'rubygems'
sql = Mysql.real_connect("localhost", "root", "123", "db1")
st1 = "a"
st2 = "b"
user_string = "(#{st1},#{st2})"
query="INSERT INTO table1 (fromuser, tweet) VALUES" + user_string
sql.query(query)

我想在表格中插入“a”和“b”。 怎么解决这个问题?

提前致谢,

2 个答案:

答案 0 :(得分:2)

就像安德鲁说的那样,你肯定想逃避你的数据。

我认为你还需要引用这些值:

insert = client.query("INSERT INTO tweets (from_user, tweet_text)
                       VALUES ('#{client.escape(status.from_user)}',
                               '#{client.escape(status.text)}')")

答案 1 :(得分:1)

您需要使用CREATE TABLE在数据库中创建一个表来插入数据。目前,您要将数据插入数据库名称(“db1”)本身。

此外,您必须首先转义数据:

insert = client.query("INSERT INTO tweets (from_user, tweet_text)
                       VALUES (#{client.escape(status.from_user)},
                               #{client.escape(status.text)})")