假设我有两个不同的数组。
电子邮件= [" 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
端
但是现在我有两个数组,我需要将它们放在一起,以便每个电子邮件根据正确的名称关联。我该怎么做?
答案 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(",") + ")"
看起来有点难看,但你明白了