Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re^2: DBI Prepared Update and NULLs

by paulbort (Hermit)
on Jul 28, 2004 at 20:53 UTC ( #378213=note: print w/replies, xml ) Need Help??


in reply to Re: DBI Prepared Update and NULLs
in thread DBI Prepared Update and NULLs

Thanks for the re-assurance. The specific error message is DBD::Pg::st execute failed: ERROR:  parser: parse error at or near "," Every time I've run into that error before and I haven't misplaced a comma, it has been this roadblock.

The prepared statement is:
$st{ 'UpdDoc' } = $dbh->prepare( <<ENDSQL ); UPDATE img_Printer_Doc SET prd_Copies = ?, prd_Tray = ?, prd_Size = ?, prd_Duplex = ?, prd_NUp = ?, prd_Landscape = ?, prd_Scaling = ?, prd_Redirect = ? WHERE prt_Number = ? AND ref_IndexCode = ?; ENDSQL


I'm executing it with the following: (Don't worry, the %cgiparms are strictly filtered)
$st{ 'UpdDoc' }->execute( $cgiparms{ 'copies' }, $cgiparms{ 'tray' }, $cgiparms{ 'size' }, $cgiparms{ 'duplex' }, $cgiparms{ 'nup' }, $cgiparms{ 'orientation' } eq 'Landscape', $cgiparms{ 'scaling' }, $cgiparms{ 'redirect' }, $cgiparms{ 'NUMBER' }, $cgiparms{ 'DOCTYPE' } );
(prd_Landscape is a boolean, hence the eq.)

I'm on DBI 1.30, DBD::Pg 1.13. I didn't see anything that seemed relevant in the DBI or DBD::Pg changelog, so I'm assuming that I've done something stupid at this point.

--
Spring: Forces, Coiled Again!

Replies are listed 'Best First'.
Re^3: DBI Prepared Update and NULLs
by iburrell (Chaplain) on Jul 28, 2004 at 21:09 UTC
    What version of PostgreSQL is your database? 7.3 changed the handling of booleans. Booleans can only be 't', 'true', 'y', '1', or 'f', 'false', 'n', '0'. The quotes around the string are required: 0 and 1 are not allowed.

    This creates a problem for DBD::Pg since it detects Perl "booleans" as integers, and passes them without quotes. I remember that 7.3 would sometimes produce a parse error when it got an integer literal instead of giving a type error.

    One solution is to make the string explicit:

    $cgiparms{ 'orientation' } eq 'Landscape' ? 't' : 'f'

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://378213]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (3)
As of 2019-07-20 04:56 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?