<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 &lt;igor.sutton@gmail.com&gt;<br>Para: Cascavel Perl Mongers &lt;cascavel-pm@pm.org&gt;<br>Enviadas: Quinta-feira, 25 de Janeiro de 2007 15:49:37<br>Assunto: Re: [Cascavel-pm] Res: Duvida $dbh-&gt;prepare<br><br><div>Patty,<br><br>Em
 25/01/07, Patty Silva&lt;ptfzs@yahoo.com.br&gt; escreveu:<br>&gt;<br>&gt; Ola Luis..<br>&gt; Aproveitando o seu codigo, tentei implementar o codigo abaixo, so para ver c<br>&gt; funciona:<br>&gt;<br>&gt;<br>&gt; @data_hash_references=('2007-01-23 12:00');<br>&gt; $variavel='Nome'';&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt; essa variavel pode mudar...<br>&gt; $flag='BLABLA';<br>&gt; $id='33';<br>&gt; $table='tabela2';<br>&gt;<br>&gt;<br>&gt; my $sql = qq/ INSERT INTO $table(Nome,DataHora) VALUES(?,?) ON DUPLICATE KEY<br>&gt; UPDATE ?=? /;<br>&gt;<br>&gt; my ( $sth );<br>&gt;<br>&gt; eval {<br>&gt; $sth = $dbh-&gt;prepare( $sql );<br>&gt;<br>&gt; foreach my $data(@data_hash_references)<br>&gt; {<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;$sth-&gt;execute($id,$data,$variavel,$flag);<br>&gt;<br>&gt; }<br>&gt; $sth-&gt;commit;<br>&gt; };<br>&gt; if( $@ )<br>&gt; {<br>&gt;&nbsp;&nbsp; $dbh-&gt;rollback;<br>&gt;&nbsp;&nbsp; die "Pau de base de
 dados: $@";<br>&gt; }<br>&gt;<br>&gt;<br>&gt;<br>&gt;<br>&gt; So que ele da erro de Sintaxe quando ele atribui o ?=? eu acho q ele coloca<br>&gt; uma aspas...<br>&gt;<br>&gt; :D Alguem saberia dzer&nbsp;&nbsp;o pq??<br>&gt;<br>&gt;<br>&gt; Obnrigada + uma vez...<br><br><br>Os placeholders fazem teste de sanidade para&nbsp;&nbsp;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
 &lt;igor.sutton@gmail.com&gt;<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>