Try seeing the DBI trace method, and set the trace level high enough that you can see how your statement is parsed. Since PostgreSQL doesn't natively support placeholders, the DBD needs to parse the statement and replace placeholders with values. It may not be doing it correctly and might be a bug. Did you try putting your entire SQL statement on one line? Could be that the linebreaks are confusing the parsing of placeholders.

Also, what version of DBD::Pg are you using? Is it the latest? Several revisions have had fixes to placeholder parsing.

Update: I have DBD::Pg 1.21, and PostgreSQL installed at home, and I get no error with this code (and I've verified that the data gets inserted):

use warnings; use strict; use DBI; my $dbh = DBI->connect("dbi:Pg:dbname=pdqtest;host=localhost", "Owner", "", {RaiseError=>1}, ); dbh->do("create table mytmptbl (fld1 timestamp, fld2 integer)"); my $sql = qq{ INSERT INTO mytmptbl VALUES ( current_timestamp, ? ) }; my $var = 3; $dbh->do($sql, undef, $var); $dbh->disconnect;

In reply to Re: DBD::Pg placeholder problem by runrig
in thread DBD::Pg placeholder problem by McMahon

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.