[Cascavel-pm] Sugestao - Insercao no Banco

Thomas Britis thomas em tcnet.com.br
Quinta Maio 25 10:33:56 PDT 2006


$dbh->do($sql) ???

Patty Silva wrote:
> Bom Pessoal..
> eu fiz assim para inserir no Banco:
> $update=$variavel."="."'$valor'";
> $sql="Insert into tabela1(Nome,DataHora) values($nome,$data) on 
> duplicate key update $update";
> print "SQL: $sql\n":
> $sth = $dbh->prepare($sql);
> $sth->execute();
> $sth->finish();
> 
> a saida na tela do SQL eu colei no mysql e funcionou perfeitamente.. mas 
> no perl da a seguinte msg de erro:
> 
> DBD::mysql::st execute failed: Query was empty at teste.pl line 118, 
> <FH> line 532
> ???
> 
> 
> pq sera?? :)
> 
> 
> 
> 
> 
> */Igor Sutton <igor.sutton em gmail.com>/* escreveu:
> 
>     Seguem comentários:
> 
>         my %table = (
>             "Variavel 1" => "T1r",
>             "Variavel 2"   => "T2r",
>             "Variavel 3" => "T3r",
>         );
> 
> 
>         $dbh = DBI->connect("DBI:mysql:$DBName",$UserName, $password) ||
>         die("Erro de Conexao:$DBI:errstr") ;
> 
>         chdir ($caminho) || die "\n *** Erro no diretorio $caminho ***";
> 
>         for(parse_dir(`ls -ltr`))
>         {
>         ($arquivo) = @$_;
> 
> 
>     Eu modificaria este trecho de código:
> 
>         open(FH, "<$arquivo") or die("Arquivo nao encontrado");
>         @table = <FH>;
>         shift @table; # descarta primeira linha
>         close(FH);
> 
>         foreach(@table)
>         {
> 
> 
>     para:
>      
>     open FH, "<", $arquivo or die "Problemas para abrir o arquivo
>     $arquivo: $!";
>     # Se o seu arquivo for muito grande, você não vai querer que ele
>     # transforme todo o conteúdo em um graaaaaaaaaande array consumindo
>     # toda a memória. foreach() é utilizado em contexto de array, por
>     isso este
>     # comportamento.
>     while ($_ = <FH>) {
>         next unless $. > 1;
> 
>         if ($_ =~ /^\s*VARIAVEL/)
>         {
>          
>             if( (s#^\s*VARIAVEL-S##) or (s#^\s*VARIAVEL-B##) )
>             {
>            
>            
>            
>              }
>              else
>              {
> 
> 
>     Este aqui também pode ser modificado:
> 
>                       
>         (undef,$variavel,$nome,undef,undef,undef,undef,undef,$data_arquivo,undef,$valor,$var)
>         = split /\s+/, $_;
> 
> 
>     ($nome, $data_arquivo, $valor, $var) = (split /\s+/)[1,2,8,10,11];
> 
>              $data_arquivo =~
>         s/(\d\d\d\d)(\d\d)(\d\d)_(\d\d)(\d\d)/$1-$2-$3 $4:00/;
> 
>              if (defined $table{$variavel})
>              {
>                 
>                 $variavel = $table{$variavel};
>                      
>              }
> 
> 
>     Creio que esteja aqui a sua dúvida, e uma possível solução, pois não
>     lembro se podemos utilizar placeholders em nome de colunas também:
> 
>              $update = "$variavel=$valor";
>              
>              $sql="Insert into tabela1(Nome,DataHora)
>         values($nome,$data) on duplicate key update $update"; 
> 
> 
>     my $query = qq/INSERT INTO TABELA1(Nome, DataHora) values (? , ?) ON
>     DUPLICATE KEY UPDATE ? = ?/;
> 
>     my $sth = $dbh->prepare($query);
>     $sth->execute($nome, $data, $variavel, $valor) or warn "Problemas ao
>     executar SQL: ", $dbh->errstr;
> 
>             # $sth = $dbh->prepare($SQL);
>             # $sth->execute();
>              # $sth->finish();
> 
>             }
>                  
>           }
>            
>         Entao pessoal esta ai!! :) desculpe se anteriormente nao postava
>         o codigo.. daqui pra frente comecarei a postar!! :P
>         Ajuda os companheiros tb!!
> 
>         :***
> 
> 
>     -- 
>     Igor Sutton Lopes
>     http://www.izut.com/ _______________________________________________
>     Cascavel-pm mailing list
>     Cascavel-pm em pm.org
>     http://mail.pm.org/mailman/listinfo/cascavel-pm
> 
> 
> ------------------------------------------------------------------------
> Navegue com o Yahoo! Acesso Grátis, assista aos jogos do Brasil na Copa 
> e ganhe prêmios de hora em hora 
> <http://us.rd.yahoo.com/mail/br/tagline/freeisp_promo_copa/*http://br.yahoo.com/artilheirodacopa/>. 
> 
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm

-- 
Thomas Storino Britis
TCNet Informatica e Telecomunicacoes LTDA


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