1

假设我有两个不同的数组。

电子邮件 = [“email@email.com”、“email1@email.com”、“email2@email.com”]

姓名 = [“姓名姓氏”,“姓名1,姓氏1”,“姓名2,姓氏2”]

我有一个名为 Contacts 的 mysql 表,我想将每个值插入到名为 Emails 和 Names 的行中。每个名称和电子邮件都应插入其相应的索引处。因此,Emails[0] 应与 Names[0] 一起插入,Emails[1] 与 Names[1] 等一起插入。

如果只有一个数组。我可以做类似的事情

sql = "INSERT INTO Contacts (email)
VALUES
('#{email}')

Emails.each do |email|
email = email.sql
end

但现在我有两个数组,我需要把它们放在一起,以便每封电子邮件都根据正确的名称关联。我该怎么做呢?

4

2 回答 2

1

使用zip

 con.prepare "INSERT INTO Contacts(email, name) VALUES(?, ?)"
 Emails.zip(Names).each do |email,name|
   #insert into db
   con.execute(email,name) #assuming **con** is your connection object
 end
于 2013-02-04T04:51:28.923 回答
1

如果你真的想迭代,你可以这样做:

Email.zip(Names).each do |email, name|
  sql = "INSERT INTO Contacts (email, name) VALUES ('#{email}', '#{name)')"
end

或者,您可以使用批量插入

sql = "INSERT INTO Contacts (email, name) VALUES (" + 
      Emails.zip(Names).map { |e, n|  "('#{e}', '#{n}')" }.join(",") + ")"

看起来有点丑,但你懂的

于 2013-02-04T04:52:39.447 回答