in reply to RE: DBI Select and Update
in thread DBI Select and Update

Why are you preparing each time with placeholders? Should be more like:

my $sth_udt = $dbh->prepare(qq{UPDATE items set price = ? WHERE oid = +?}); while (my $val = $sth->fetchrow) { my $price = param("item_${val}_price"); $sth_udt->execute($price, $val); # You could probably just do: # $sth_udt->execute(param("item_${val}_price"), $val); }

Cheers,
KM

Replies are listed 'Best First'.
RE: RE: RE: DBI Select and Update
by nutate (Novice) on May 31, 2000 at 19:25 UTC

    Now that's a good call. Good syntax as well. Thanks a ton. It defeats the purpose of the placeholders to call them every loop

    My problem was my inability to realize i could make more than one statement handle, that makes everything easier, even though the man pages no doubt explicitly state that you can. Go go perlmonks.

    Ok, now thanks for all the help, here is the finished product:

    Note that i stayed with the bind_columns/fetch idea, which should be faster. I suppose, though, that a bind_col might speed it up even more...

    $sth = $dbh->prepare(q{SELECT oid from items where orderid = ?}) || +die $dbh->errstr; $sth->execute($orderid) || die $dbh->errstr; $sth->bind_columns(\$oid); # Binds each column to $oid, through ref +erence my $sth_udt = $dbh->prepare(qq{UPDATE items set price = ? WHERE oid += ?}); while ($sth->fetch) { my $price = param("item_${oid}_price"); $sth_udt->execute($price, $oid); # You could probably just do this, but it didn't work for me...? +!?!: # $sth_udt->execute(param("item_${oid}_price"), $oid); }
DBI Select and Update
by agoth (Chaplain) on Jun 01, 2000 at 01:47 UTC
    duh, missed that.....