List:General Discussion« Previous MessageNext Message »
From:Paul DuBois Date:April 20 1999 4:07pm
Subject:Re: problems...
View as plain text  
At 11:03 AM -0500 4/20/99, Christian Mack wrote:
>Jeremy wrote:
>>
>> I'm very new to MySQL, CGI and Perl and this may not be
>> the best place to post my question, but I'm gonna try...
>>
>> I have a small SQL database/table and I have been adding
>> records to it manually with the mysql client (INSERT INTO...).
>> In the past few minutes, I tried to whip up a perl script
>> so that I could do this from the web browser and save
>> myself some typing. I have everything (modules, etc) that
>> is needed installed.
>>
>> I enter the data into the html form and hit the submit
>> button.  It takes a minute (this is a slow machine) and
>> the html that is supposed to be returned is displayed,
>> along with a new copy of the same form.  (The CGI outputs
>> the HTML for the form so I don't have to click 'Back').
>> However, the record never gets added to the table.  I
>> ran the CGI script manually...
>>
>> [jeremy@jgaddis:tty3:/var/www/cgi-bin]$ ./add2sqldb.pl
>> (offline mode: enter name=value pairs on standard input)
>> id=11830&description=Coronado+Shelf&cost=13.80
>> Content-type: text/html
>>
>> <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
>> <HTML><HEAD><TITLE>Add records to homeint:items SQL
> database</TITLE>
>> </HEAD><BODY>
>> DBD::mysql::st execute failed: You have an error in your SQL syntax near
>> ';
>> ' at line 1 at ./add2sqldb.pl line 40, <> chunk 1.
>> You have an error in your SQL syntax near ';
>> ' at line 1 at ./add2sqldb.pl line 40, <> chunk 1.
>> Database handle destroyed without explicit disconnect, <> chunk 1.
>>
>> The "id=11830&desc..." line is entered manually by me
>> then it starts returning the html.  It stops after the <BODY>
>> tag, until I press Enter.  That's when the error messages come
>> up.
>>
>> Here's the relevant lines from add2sqldb.pl...
>>
>> my $sth = $dbh->prepare(q{
>>   insert into testtable values (?, ?, ?);
>> }) || die $dbh->errstr;
>>
>> while (<>) {
>>   chop;
>>   my ($id, $description, $cost) = split /,/;
>>   $sth->execute($id, $description, $cost) || die $dbh->errstr;
>> }
>>
>> The second to last line ("$sth->execute...") is line 40,
>> which is supposed to have the error.  I've tried and
>> tried but I can't figure it out.  Anyone know what's
>> going on?
>>
>> TIA,
>> Jeremy
>
>Hi Jeremy
>
>This only can happen with old mysql versions.
>They didn't accept SQL statements with a trailing ';'.
>Therefore upgrade mysql or remove the trailing ';' from your statements.


Semicolon is never required for DBI.  It's best to always leave
it off.  (This is the answer I got when I asked on the DBI list
a while ago.)

--
Paul DuBois, paul@stripped
Northern League Chronicles: http://www.snake.net/nl/
Thread
problems...Jeremy20 Apr
  • Re: problems...Christian Mack20 Apr
    • Re: problems...Paul DuBois20 Apr
    • Re: problems...Jeremy20 Apr
  • Re: problems...Sasha Pachev20 Apr