In the values section of the SQL statement, I need a string of the form "?,?,?" where there is a ? for each field, and all the ?s are delimited by commas. However, there can not be a trailing comma at the end or syntax errors in the database (PostgreSQL) result.
I tried
my $sth = $dbh->prepare( 'INSERT INTO table(' . join(',', keys %$c) . ") VALUES (" . chop(join('', map {'?,'} keys %$c)) . ")" );
I managed to make the code work by taking it out and explicitly assigning the value of the expression to a scalar, $placeholderstr. I would like to inline the rvalue of the first line of this code in the $dbh->prepare() statement. Any ideas?
code:
my $placeholderstr = join('', map {'?,'} keys %$c); chop $placeholderstr; my $sth = $dbh->prepare( 'INSERT INTO table(' . join(',', keys %$c) . ") VALUES ($placeholderstr)" ); $sth->execute(values %$c) or die $dbh->errstr;
In reply to Can't I chop the lvalue of join? by DapperDan
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |