使用Ruby将两个独立数组中的值插入到mysql表中

时间:2013-02-04 04:45:34

标签: mysql ruby arrays

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

  

电子邮件= [" email@email.com"," email1@email.com"," email2@email.com"]

     

姓名= ["姓名姓氏","姓名1,姓氏1","姓名2,姓氏2"]

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

如果只有一个阵列。我可以做类似

的事情
  

sql =" INSERT INTO Contacts(email)
  价值观   ('#{电子邮件}')

  Emails.each做|电子邮件|
  email = email.sql
  端

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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(",") + ")"

看起来有点难看,但你明白了