1

2つの異なる配列があるとします。

メール=["email@email.com"、 "email1@email.com"、 "email2@email.com"]

名前=["NameSurname"、 "Name1、Surname1"、 "Name2、Surname2"]

そして、Contactsというmysqlテーブルがあり、各値をEmailsandNamesという行に挿入します。それぞれの名前と電子メールは、対応するインデックスに挿入する必要があります。したがって、Emails [0]は、Names [0]、Emails [1] withNames[1]などと一緒に挿入する必要があります。

アレイが1つしかない場合。私は次のようなことをすることができます

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

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

しかし、今は2つの配列があり、各電子メールが正しい名前に従って関連付けられるようにそれらを配置する必要があります。どうすればよいですか?

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 に答える