我有什么:
注意: 自动生成的数组每次都会有不同的长度,但长度不会超过我在表中的列数。
列名称将类似于field1,field2,field3等,其中名称将始终带有单词field,然后是数字。
我认为这可以使用Perl的map
函数来完成,但使用此函数并不需要一些指导。
我想做这样的事情:
while ( (@Row) = $sql_stmt_h->fetchrow_array() ) {
my $sql="
INSERT INTO tablename (field$x)
VALUES (map function here ... which also needs to increment the $x in field$x so that it moves onto the next column name which would be field2 if we put the first value in field1. )";
}
答案 0 :(得分:0)
使用?
占位符为数据创建Insert语句以插入所有字段。
my $sql="
INSERT INTO tablename (field1 field2 field3 field4 field5 field6 field7 field8 field9 )
VALUES (? ? ? ? ? ? ? ? ?)";
my $insert_sth = $dbh->prepare($sql);
然后做类似的事情。
my @new_data = get_array_with_random_length();
splice(@new_data, @new_data, 0, undef x (9 - @new_data)); #pad @newdata to 9 elements w/ undefs (DBI will xlate to NULL)
$insert_sth->execute(@new_data);