我在那裏一個插件使所有表單提交一個表,在這個表我對每個字段的行這樣的:最有效的方式,採取多行
1 'Name' 'Tony'
2 'Surname' 'Smith'
3 'Mail' '[email protected]'
4 etc.
我要採取一切這個數據到一個表中所有的數據是在列中,像這樣:
New_Id Name Surname Mail
1 'Tony' 'Smith' '[email protected]'
2 'Mary' 'DotCom' '[email protected]'
我有很多這些記錄,所以效率很重要。我的第一種方法是在第一個表中的每個字段上使用PHP循環,然後決定是否必須在第二個表中插入或更新,此解決方案甚至可能需要先前的選擇來查看字段是否已經填充,因此解決方案不是很好不錯。
你能想出更好的解決方案嗎?
編輯:這是我的結構:
這是我的目標表,字段名是西班牙語,但他們的名字,birth_date,ADRESS等
create table target_table
(id int not null AUTO_INCREMENT,
blog_id int,
submission_id int,
form_id varchar(250) character set utf8 collate utf8_general_ci,
submission_date timestamp,
ip varchar(250) character set utf8 collate utf8_general_ci,
sitio varchar(250) character set utf8 collate utf8_general_ci,
nombre varchar(4000) character set utf8 collate utf8_general_ci,
fecha_nacimiento varchar(250),
email varchar(250) character set utf8 collate utf8_general_ci,
direccion varchar(250) character set utf8 collate utf8_general_ci,
cp varchar(250) character set utf8 collate utf8_general_ci,
PRIMARY KEY(id));
和源實際上是兩個表,cforms_submissions是父母與submission_id,submission_date和電子郵件:
id int(11) unsigned PK
form_id varchar(3)
sub_date timestamp
email varchar(40)
ip varchar(15)
而且cforms_data是子表字段及其值:
f_id int(11) unsigned PK
sub_id int(11) unsigned <---- This is FK to parent
field_name varchar(100)
field_val text
所以,我應該這樣做:
select submissions....
for each submission
select fields in submissions
for each field in submission
if first_field
insert
else
update
也許還有更好的方法嗎?
謝謝你,順便說一句,我與MySQL
當前記錄如何鏈接?例如。你怎麼知道'Name' - >'Tony'與''姓'' - >'Smith''有關? – DaveRandom
至少你正在使用EAV。瞭解您當前的設計將會有所幫助,,, –
表單字段列表是否有限且已經定義? IE,系統或用戶不能添加任意新的密鑰? – jklemmack