Michael, John, ALL;

Thank you! Thanks you! My errors of "local_host" and "if $dbh->err" fix it.
I am able to insert and select data.

Thank you ALL,

Jerry

-----Original Message-----
From: Michael Stassen [mailto:[EMAIL PROTECTED] 
Sent: Friday, March 04, 2005 5:41 PM
To: John Trammell
Cc: mysql@lists.mysql.com; [EMAIL PROTECTED]; Gerald Preston
Subject: Re: insert data

Right.  First, I think the logic is flawed.  We should successfully 
prepare() or die.  Period.  If the call to prepare() failed ($sth is undef),

we should not making dying conditional on yet another value.

More to the point, this line is actually the cause of the problem.  (Sorry I

didn't see it earlier.)  You've run into the precedence rules:

   my $sth = $dbh->prepare( $sql ) or die $dbh->errstr if $dbh->err;

is read as

   (my $sth = $dbh->prepare( $sql ) or die $dbh->errstr) if $dbh->err;

That is, it is equivalent to

   if ($dbh->err)
   {
     $sth = $dbh->prepare( $sql ) or die $dbh->errstr;
   }

Since the connect succeeded, $dbh->err is undef, so we never even call 
prepare!  Hence, $sth is undef when we get to execute, and you get the error

message.  I expect this is what Joe (John Doe) was trying to tell us
earlier.

The simplest solution would be to drop the "if $dbh->err".  That is, change
to

   my $sth = $dbh->prepare( $sql ) or die $dbh->errstr;

John's suggestion (below) is better still, as it adds helpful detail to the 
error message when there is one (though I don't see the need to make it a 
separate line of code).

Michael


John Trammell wrote:

> Gerald Preston wrote:
> [snip]
> 
>>my $sth = $dbh->prepare( $sql ) or die $dbh->errstr if $dbh->err;
> 
> [snip]
> 
> Regardless of other problems you may be having, I think you're not
> doing what you want to do here.  How about instead:
> 
> my $sth = $dbh->prepare($sql);
> $sth || die "Error preparing sth from '$sql': ", $dbh->errstr;
> 

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]





-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to