You are viewing a plain text version of this content. The canonical link for it is here.
Posted to asp@perl.apache.org by Trevor Cushen <Tr...@sysnet.ie> on 2005/05/19 16:02:44 UTC

Perl DBI with Apache ASP

Hello

I am working on an apache asp page that has a mysql database at the backend.  The problem I have is that the code does work but sometimes the error

	#  Can't call method "prepare" on an undefined value
appears and my page fails.

I know the code I have works because it runs several times then fails.  I have also established that the error is because the connection to the database failed.

The database is on the same system so network errors are not the problem.

The following is the code

my $price="";
  5: my $product="";
  6: my $ID="";
  7: 
  8: if ($Request->Params('par'))
  9: {
 10: 	$par=$Request->Params('par');
 11: }
 12: else
 13: {
 14: 	$Response->Redirect('test.asp');
 15: }
 16: 
 17: $price=$Request->Params('price');
 18: $product=$Request->Params('Product');
 19: $ID=$Session->{'user'};
 20: 
 21: $DBH=DBI->connect($dsn,$user,$pwd);
 22: 
 23: $sth=$DBH->prepare("Insert into wishlist(sessionID,product,price,pnumber,pcode,name) values ('$ID','$product','$price','not-set','$par','not-set')" );
 24: 
 25: 
 26: $sth->execute();
 27: 
 28: $sth->finish;
 29: $DBH->disconnect;
 30: 
 31: $Response->Redirect("test.asp?par=$par");
 32: 

The DBI-connect parameters are setup in the global.asa file.  I had the connect statement in there too but I would get more refreshes and successful runs when it was in here then in the global.asa.  It seems to be intermittent for some reason.  

Again the code does do what it is supposed to most of the time but sometimes fails with the above error.

Can anyone help me on this.

Many thanks

Trevor Cushen
Sysnet Ltd

Telephone: 01-2983000



******************************************************************************

This email and any files transmitted with it are confidential and intended 
solely for the use of the individual or entity to whom they are addressed. 

If you have received this message in error please notify SYSNET Ltd., at
telephone no: +353-1-2983000 or postmaster@sysnet.ie

******************************************************************************


Re: Perl DBI with Apache ASP

Posted by Skylos <sk...@gmail.com>.
Should make sure you have enough simultaneous sessions capable on the
DB to handle all the possible connections.  Like, if you're using
prefork, as many connections as there are processes.  Make sure you
disconnect when done even when doing errors and such.

Skylos


On 5/19/05, Trevor Cushen <Tr...@sysnet.ie> wrote:
>  
> 
> Hello 
> 
> I am working on an apache asp page that has a mysql database at the backend.
>  The problem I have is that the code does work but sometimes the error 
> 
>         #  Can't call method "prepare" on an undefined value 
> appears and my page fails. 
> 
> I know the code I have works because it runs several times then fails.  I
> have also established that the error is because the connection to the
> database failed. 
> 
> The database is on the same system so network errors are not the problem. 
> 
> The following is the code 
> 
> my $price=""; 
>   5: my $product=""; 
>   6: my $ID=""; 
>   7: 
>   8: if ($Request->Params('par')) 
>   9: { 
>  10:    $par=$Request->Params('par'); 
>  11: } 
>  12: else 
>  13: { 
>  14:    $Response->Redirect('test.asp'); 
>  15: } 
>  16: 
>  17: $price=$Request->Params('price'); 
>  18: $product=$Request->Params('Product'); 
>  19: $ID=$Session->{'user'}; 
>  20: 
>  21: $DBH=DBI->connect($dsn,$user,$pwd); 
>  22: 
>  23: $sth=$DBH->prepare("Insert into
> wishlist(sessionID,product,price,pnumber,pcode,name) values
> ('$ID','$product','$price','not-set','$par','not-set')" ); 
> 
>  24: 
>  25: 
>  26: $sth->execute(); 
>  27: 
>  28: $sth->finish; 
>  29: $DBH->disconnect; 
>  30: 
>  31: $Response->Redirect("test.asp?par=$par"); 
>  32: 
> 
> The DBI-connect parameters are setup in the global.asa file.  I had the
> connect statement in there too but I would get more refreshes and successful
> runs when it was in here then in the global.asa.  It seems to be
> intermittent for some reason.  
> 
> Again the code does do what it is supposed to most of the time but sometimes
> fails with the above error. 
> 
> Can anyone help me on this. 
> 
> Many thanks 
> 
> Trevor Cushen 
> Sysnet Ltd 
> 
> Telephone: 01-2983000 
> ******************************************************************************
> This email and any files transmitted with it are confidential and intended
> solely for the use of the individual or entity to whom they are addressed.
> If you have received this message in error please notify SYSNET Ltd., at
> telephone no: +353-1-2983000 or postmaster@sysnet.ie
> ******************************************************************************

---------------------------------------------------------------------
To unsubscribe, e-mail: asp-unsubscribe@perl.apache.org
For additional commands, e-mail: asp-help@perl.apache.org


Re: Perl DBI with Apache ASP

Posted by Helmut Zeilinger <hz...@hzlabs.de>.
Hi,

what does DBI::errstr say ?

E.g.

...
$DBH=DBI->connect($dsn,$user,$pwd);
print DBI::errstr;

# prevent the script from dying in the subsequent $dbh->execute();
$Response->End();
...


By the way:

-     I would not use a global variable $DBH rather than a private "my 
$DBH".
      What happens, if a second script (in another apache child) is
      calling "$DBH->execute" just after in the first script 
"$DBH-disconnect()" was done?


Helmut



> Hello
>
> I am working on an apache asp page that has a mysql database at the 
> backend.  The problem I have is that the code does work but sometimes 
> the error
>
>         #  Can't call method "prepare" on an undefined value
> appears and my page fails.
>
> I know the code I have works because it runs several times then 
> fails.  I have also established that the error is because the 
> connection to the database failed.
>
> The database is on the same system so network errors are not the problem.
>
> The following is the code
>
> my $price="";
>   5: my $product="";
>   6: my $ID="";
>   7:
>   8: if ($Request->Params('par'))
>   9: {
>  10:    $par=$Request->Params('par');
>  11: }
>  12: else
>  13: {
>  14:    $Response->Redirect('test.asp');
>  15: }
>  16:
>  17: $price=$Request->Params('price');
>  18: $product=$Request->Params('Product');
>  19: $ID=$Session->{'user'};
>  20:
>  21: $DBH=DBI->connect($dsn,$user,$pwd);
>  22:
>  23: $sth=$DBH->prepare("Insert into 
> wishlist(sessionID,product,price,pnumber,pcode,name) values 
> ('$ID','$product','$price','not-set','$par','not-set')" );
>
>  24:
>  25:
>  26: $sth->execute();
>  27:
>  28: $sth->finish;
>  29: $DBH->disconnect;
>  30:
>  31: $Response->Redirect("test.asp?par=$par");
>  32:
>
> The DBI-connect parameters are setup in the global.asa file.  I had 
> the connect statement in there too but I would get more refreshes and 
> successful runs when it was in here then in the global.asa.  It seems 
> to be intermittent for some reason. 
>
> Again the code does do what it is supposed to most of the time but 
> sometimes fails with the above error.
>
> Can anyone help me on this.
>
> Many thanks
>
> Trevor Cushen
> Sysnet Ltd
>
> Telephone: 01-2983000
>
>
> ****************************************************************************** 
> This email and any files transmitted with it are confidential and 
> intended solely for the use of the individual or entity to whom they 
> are addressed. If you have received this message in error please 
> notify SYSNET Ltd., at telephone no: +353-1-2983000 or 
> postmaster@sysnet.ie 
> ******************************************************************************




---------------------------------------------------------------------
To unsubscribe, e-mail: asp-unsubscribe@perl.apache.org
For additional commands, e-mail: asp-help@perl.apache.org