1

我正在尝试使用 Ruby 将值插入到本地主机上的 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”。如何解决这个问题?

提前致谢,

4

2 回答 2

2

就像 Andrew 说的,你肯定想逃避你的数据。

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

insert = client.query("插入推文 (from_user, tweet_text)
                       值 ('#{client.escape(status.from_user)}',
                               '#{client.escape(status.text)}')")
于 2013-04-13T21:56:30.983 回答
1

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

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

insert = client.query("INSERT INTO tweets (from_user, tweet_text)
                       VALUES (#{client.escape(status.from_user)},
                               #{client.escape(status.text)})")
于 2013-04-13T21:18:50.197 回答