Crap sorry about the double post.. where's that damn undo send e-mail button
:(

A 'better' way imo would be,

my %record; #full of my stuff
my $table = "MyTable";
my $sql   = join ',', map {"$_=?"} keys %record;
$dbh->do("insert into $table set $sql",undef,values %record);

Richard


----- Original Message ----- 
From: "Daniel Kasak" <[EMAIL PROTECTED]>
To: "Nik Belajcic" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
Sent: Tuesday, June 01, 2004 5:15 AM
Subject: Re: Perl arrays into MySQL


> Nik Belajcic wrote:
>
> >This may be a silly question, but I am wondering if there is something
> >opposite to:
> >
> >@row = $sth->fetchrow_array
> >
> >In other words, instead of fetching rows from MySQL and loading them
> >into an array that can be accessed from Perl, I want to do the opposite
> >- take a Perl (associative) array and load it into MySQL table.
> >I know I could dump it into a text file and read it from there, but
> >assuming I do not want to go through this intermediary step, how could I
> >do it?
> >
> >Any suggestions appreciated.
> >
> >
> No there is not, but I urge to to implement it :)
>
> You can do something like:
>
> my %record; # Your record in memory you want in the table. It obviously
> needs to be filled
>
> my $sql_1;
> my $sql_2;
> my $sql_3;
> my $tablename = "MyTable"; # TODO: Set this another way?
>
> foreach my $key (keys %record) {
>     $sql_1 .= "$key, ";
>     $sql_2 .= "?, ";
>     $sql_3 .= %record{$key} . ", ";
> }
>
> # Chop off the trailing comma and space
> $sql_1 = substr($sql_1, 0, length($sql_1)-2);
> $sql_2 = substr($sql_2, 0, length($sql_2)-2);
> $sql_3 = substr($sql_3, 0, length($sql_3)-2);
>
>
> my $sth = $dbh->prepare("insert into $tablename ( $sql_1 ) values (
> $sql_2 )");
>
> $sth->execute($sql_3);
>
>
> CAUTIONARY NOTE!!!!!!
>
> I'm just learning Perl myself. The above code is NOT tested.
> But you should be able to get the idea anyway :)
>
> -- 
> Daniel Kasak
> IT Developer
> NUS Consulting Group
> Level 5, 77 Pacific Highway
> North Sydney, NSW, Australia 2060
> T: (+61) 2 9922-7676 / F: (+61) 2 9922 7989
> email: [EMAIL PROTECTED]
> website: http://www.nusconsulting.com.au
>
>


----------------------------------------------------------------------------
----


> -- 
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to