[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