no, the @bind_values is a list to bound for that statement.  It could 1
or many (i.e. if you have where id = ? and date = ? ).  If you have a
list of values that need to be inserted into different rows, then
iterate through the array and execute the 'do'.  A word of caution, if
the list is going to be big, "pre-prepare" you're statement for
preformance issues. Although some databases do not support this, it is
good coding practice and will make a big effect on performance if the
code is used with another database, such as Oracle.

i.e.

for (@vals) { 
  $dbh->do(
      'INSERT INTO Stuff (Id,Foo) VALUES (NULL,?)',
      undef,
      $_
  ) or die ....
}
 
On Wed, 2004-05-12 at 09:13, JupiterHost.Net wrote:
> Howdy group!
> 
> perldoc DBI
> has this:
>     $rv  = $dbh->do($statement, \%attr, @bind_values);
> 
> So would this be a proper use of it:
> 
>   $dbh->do(
>     'INSERT INTO Stuff (Id,Foo) VALUES (NULL,?)',
>      undef,
>      qw('foo' 'bar' 'baz')
>   ) or die ....
> # IE undef foro \%attr and include quoted data
> 
> That would essencially run:
>   INSERT INTO Stuff (Id,Foo) VALUES (NULL,'foo');
>   INSERT INTO Stuff (Id,Foo) VALUES (NULL,'bar');
>   INSERT INTO Stuff (Id,Foo) VALUES (NULL,'baz');
> since do() does the prepare and execute for you.
> correct?
> 
> TIA
> 
> Lee.M - JupiterHost.Net

Reply via email to