After you do a 'prepare', you need to do an 'execute'. See the DBI documentation.
...
I don't know what type of values your data might have, but a single quote within any item will break your process. This is one of the cases where placeholders are your friend. (and if you pass 'undef' to them, then you don't have to worry about the logic for handling NULL)
my $sql = 'UPDATE table SET ' . join (',', map {"$_=?"} @ffs) . 'WHERE tbl.field=?'; # check the string '$sql' -- you used 'table' in the FROM, but 'tbl' i +n the WHERE my $sth = $db->prepare( $sql ); $sth->execute( @cols{@ffs}, $lname );
update: fixed a couple of typos.
update 2: if the empty string is being used to signify null (and not just a bad test for undef (undef eq ''), then change the execute line to:
$sth->execute( (map { $_ eq '' ? undef : $_ } @cols{@ffs} ), $lname );In reply to Re: Looping an array and placing into SQL
by jhourcle
in thread Looping an array and placing into SQL
by Quicksilver
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |