<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman, new york, times, serif;font-size:10pt"><div style="font-family: times new roman,new york,times,serif; font-size: 10pt;">Ola Luis...<br>Eu faco update pois preciso inserir uma FLAG no BANCO... nao modifica os dados somente umas FLAGS.. e depois q eu insiro no BANCO por isso eu tenho que fazer um INSERT INTO .......... ON DUPLICATE pq o NOME e DATA sao CHAVES :)<br><br>Entendeu?<br><br><br>Obrigada pela força... estou tentando implementar e ja escrevo o resultado...<br><br><br>[]sss<br><br><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;">----- Mensagem original ----<br>De: Igor Sutton <igor.sutton@gmail.com><br>Para: Cascavel Perl Mongers <cascavel-pm@pm.org><br>Enviadas: Quinta-feira, 25 de Janeiro de 2007 15:49:37<br>Assunto: Re: [Cascavel-pm] Res: Duvida $dbh->prepare<br><br><div>Patty,<br><br>Em
25/01/07, Patty Silva<ptfzs@yahoo.com.br> escreveu:<br>><br>> Ola Luis..<br>> Aproveitando o seu codigo, tentei implementar o codigo abaixo, so para ver c<br>> funciona:<br>><br>><br>> @data_hash_references=('2007-01-23 12:00');<br>> $variavel='Nome''; -> essa variavel pode mudar...<br>> $flag='BLABLA';<br>> $id='33';<br>> $table='tabela2';<br>><br>><br>> my $sql = qq/ INSERT INTO $table(Nome,DataHora) VALUES(?,?) ON DUPLICATE KEY<br>> UPDATE ?=? /;<br>><br>> my ( $sth );<br>><br>> eval {<br>> $sth = $dbh->prepare( $sql );<br>><br>> foreach my $data(@data_hash_references)<br>> {<br>><br>> $sth->execute($id,$data,$variavel,$flag);<br>><br>> }<br>> $sth->commit;<br>> };<br>> if( $@ )<br>> {<br>> $dbh->rollback;<br>> die "Pau de base de
dados: $@";<br>> }<br>><br>><br>><br>><br>> So que ele da erro de Sintaxe quando ele atribui o ?=? eu acho q ele coloca<br>> uma aspas...<br>><br>> :D Alguem saberia dzer o pq??<br>><br>><br>> Obnrigada + uma vez...<br><br><br>Os placeholders fazem teste de sanidade para evitar que você coloque<br>um código SQL malicioso (acredito que o Luis possa dar mais exemplos<br>disso).<br><br>Gostaria que você explicasse a sua query:<br><br>my $sql = qq/ INSERT INTO $table(Nome,DataHora) VALUES(?,?) ON<br>DUPLICATE KEY UPDATE ?=? /;<br><br>Em que situações o campo do UPDATE será modificado?<br><br>Ah, a propósito, o erro de sintaxe acontece pois o banco não conhece<br>as tabelas como 'tabela', apenas pela bareword.<br><br>Talvez tenha algum ponto sem nó aqui e alguém queira complementar.<br><br>HTH!<br>-- <br>Igor Sutton Lopes
<igor.sutton@gmail.com><br>_______________________________________________<br>Cascavel-pm mailing list<br>Cascavel-pm@pm.org<br><a target="_blank" href="http://mail.pm.org/mailman/listinfo/cascavel-pm">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br></div></div><br></div></div><br>__________________________________________________<br>Fale com seus amigos de graça com o novo Yahoo! Messenger <br>http://br.messenger.yahoo.com/ </body></html>