Re: [Cascavel-pm] Duvidas em passar o valor 0 (zero) para uma função.

Luis Campos de Carvalho monsieur_champs em yahoo.com.br
Terça Março 8 16:28:32 PST 2005


Rod Za wrote:
> Olá todos,
> 
> Estou com uma dúvida cruel! Quando passo o valor 0 (zero) para uma função que grava este num banco
> de dados, a minha função dá sempre erro! Como posso contornar isto?
> 
> _CODIGO_
> sub teste{
> 	my $valor = shift; 
> 	my $query = "INSERT INTO banco_de_dados (valor) VALUES ('$valor')";
> 	if($dbh->do($query)){
> 		$dbh->commit;
> 	}
> }
> _FIM_CODIGO_
> 
> ex: teste(0); ou teste(´0´); ou my $a=0; teste($a);
> 
> dá sempre o mesmo erro, como se o valor 0 (zero) nao fosse passado!
> 
> muito obrigado,
> 

   O correto é usar PlaceHolders, uma técnica de passagem de dados 
implementada por quase todos os drivers DBD:: que existem.

   __PERL__
   # Eu uso tratamento de erros por exceptions.
   $dbh->PrintError( 0 );
   $dbh->RaiseError( 1 );
   # Para usar placeholders, é preciso construir um query SQL assim:
   $sql = 'INSERT INTO banco_de_dados (valor) VALUES ( ? )';
   # e executá-lo normalmente, passando, é claro, o valor
   # que se deseja inserir, assim:
   my $sth = eval{ $dbh->prepare( $sql ); };
   if( $@ ){ &handle_error(); }
   eval{ $sth->execute( 0 ); };
   if( $@ ){ &handle_error(); }
   __END__

   Captou, Rod?
   Espero ter ajudado.
   Putamplexos!
-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  Luis Campos de Carvalho is BSc in Comp Science,
  PerlMonk [SiteDocClan], Sao Paulo PM Leader,
  Unix Sys Admin && Certified Oracle DBA
  http://br.geocities.com/monsieur_champs/
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=



Mais detalhes sobre a lista de discussão Cascavel-pm