Re: Beginner's insert problem results in unknown column value

From: Paul Dubois (paul_at_snake.net)
Date: 10/06/03


Date: Sun, 5 Oct 2003 19:42:12 -0500
To: "jmulkerin" <jmulkerin@comcast.net>, <dbi-users@perl.org>

At 16:01 -0700 10/5/03, jmulkerin wrote:
>Oh most literate ones, can you tell me what's wrong?

You didn't quote your data values, so they appear to be
column references.

Use placeholders instead, you'll be happier:

my $stmt = qq {INSERT INTO log (Nbr, Bdate, dtime)
          VALUES (?,?,?)};
my $sth = $dbh->prepare( $stmt) || die "prepare: $stmt: $DBI::errstr";
$sth->execute($Nbr, $Bdate, $Dtime) || die "execute: $stmt: $DBI::errstr";

>
>I get this error:
>DBD::mysql::st execute failed: Unknown column '0928A' in 'field
>list' at test3.pl line 20.
>execute: INSERT INTO log (Nbr, Bdate, dtime)
> VALUES (123456, 10012003, 0928A): Unknown column '0928A in
>'field list' at test3.pl line 20.
>
>>>From this script:
>#use strict;
>#use DBI qw(:sql_types);
>use DBI;
>#my $dbh;
>my ($username, $password, $eamil, $Bdate, $AcctNbr, $Dtime);
>my $username = 'jblowk';
>my $password = 'abcdefg';
>my $email = 'jblowk@nowhere.com';
>my $Bdate = '10012003';
>my $Nbr = '123456';
>my $Dtime = '0928A';
>DBI->trace(2,"dbi.out"); # trace everything to
> # dbi.out
>my ($username, $password, $email);
>#my ($dbh, $sth, $count);
>$dbh = DBI->connect ("DBI:mysql:database=logbase;host=localhost;
>'userid', 'password'") or die ("Can't connect to logbase");
>my $stmt = qq {INSERT INTO log (Nbr, Bdate, dtime)
> VALUES ($Nbr, $Bdate, $Dtime)};
>my $sth = $dbh->prepare( $stmt) || die "prepare: $stmt: $DBI::errstr";
>$sth->execute || die "execute: $stmt: $DBI::errstr";
>$sth->finish ();
>$dbh->disconnect ();