[Cascavel-pm] Duvida $dbh->prepare

Agnaldo Macedo agnaldo em starweb-software.com.br
Quinta Janeiro 25 10:37:51 PST 2007



Para os que estão tentando ajudar a Patty, pelo quen deu para notar, pelo primeiro email dela, é que ela tem três instruções de SQL e quer executa-las.

my $sql=qq{INSERT into table1(Nome,DataHora) values($nome,'$datahora') on duplicate key update $variavels='$result_flags';  };
my $sql1=qq{INSERT into  table1(Nome,DataHora) values($nome,'$datahora1') on duplicate key update $variavels='$result_flags';  };
my $sql2=qq{INSERT into  table1(Nome,DataHora) values($nome,'$datahora2') on duplicate key update $variavels='$result_flags';  };

my $sql_insert=$sql."\n"..$sql1."\n".$sql_2;
$sth = $dbh->prepare($sql_insert) || die $DBI::errstr;
$sth->execute || die $DBI::errstr;


No caso, nesse primeiro email, o objetivo dela é pegar as três instruções SQL e executa-las de uma vez apenas.
Ou seja, executar as três instruções num único execute, como um bloco de instruções SQL.

Acho que para ela, uma orientação de como concatenar as três strings de instruções em uma só e, como fazer o execute  entender e executar essa única "stringzona" já é mais do que suficiente para resolver o problema dela.
Eu não tenho recursos para isso.
Muito provavelmente alguém da lista tem de sobra.




  ----- Original Message ----- 
  From: Patty Silva 
  To: Cascavel Perl Mongers 
  Sent: Thursday, January 25, 2007 4:25 PM
  Subject: [Cascavel-pm] Res: Res: Duvida $dbh->prepare


  Ola Luis..

  1. Mensagem de erro;

  DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''NOME'=''BlABLA''' at line 1 at sql line 50.
  rollback ineffective with AutoCommit enabled at sql line 57.
  Rollback ineffective while AutoCommit is on at sql line 57.
  DBD::mysql::db rollback failed: Rollback ineffective while AutoCommit is on at sql line 57.
  DBD::mysql::db rollback failed: Rollback ineffective while AutoCommit is on at sql line 57.



  2. Nome e versão da sua base de dados;

  Mysql - 5.0

  3. Nome e versão do seu sistema operacional;

  Linux, SUSE 10.2

  4. Versão do seu perl;

  This is perl, v5.8.8 built for i586-linux-thread-multi



  E continua dando o erro :(

  Nao consegui excluir as aspas que ele coloca no ?=?            "NOME"


  []sss








  ----- Mensagem original ----
  De: Luis Motta Campos <luismottacampos em yahoo.co.uk>
  Para: Cascavel Perl Mongers <cascavel-pm em pm.org>
  Enviadas: Quinta-feira, 25 de Janeiro de 2007 15:46:57
  Assunto: Re: [Cascavel-pm] Res: Duvida $dbh->prepare


  On Jan 25, 2007, at 4:36 PM, Patty Silva wrote:
  > my $sql = qq/ INSERT INTO $table(Nome,DataHora) VALUES(?,?) ON  
  > DUPLICATE KEY UPDATE ?=? /;

  > So que ele da erro de Sintaxe quando ele atribui o ?=? eu acho q  
  > ele coloca uma aspas...
  > :D Alguem saberia dzer  o pq??

     Oies, Patty.
     Olha, você não está ajudando mais uma vez, não postando mensagens  
  de erro, nem contando para a gente que base de dados você está  
  usando. Eu estou implementando código para a sua base de dados sem  
  nem mesmo saber que base é essa...

     E me parece que você deveria passar o valor para o último  
  placeholder protegido por aspas:

     $flag=q{'BLABLA'};

     Está vendo? Eu incluí um par de "'" (aspas), mudando o operador de  
  single-quote do perl (com q{}).
     Isso deve "enganar" seu banco de dados, e evitar o erro de sintaxe.
     Me envia por favor as informações que faltam:

     1. Mensagem de erro;
     2. Nome e versão da sua base de dados;
     3. Nome e versão do seu sistema operacional;
     4. Versão do seu perl;
     5. Versão do seu DBI;
     6. Nome e versão do DBI::DBD que você está usando.

     Putósculos prá você, putamplexos para a galera do Perl... ;-)
  --
  Luis Motta Campos is software engineer,
  perl fanatic evangelist, and amateur {cook, photographer}


  _______________________________________________
  Cascavel-pm mailing list
  Cascavel-pm em pm.org
  http://mail.pm.org/mailman/listinfo/cascavel-pm




  __________________________________________________
  Fale com seus amigos de graça com o novo Yahoo! Messenger 
  http://br.messenger.yahoo.com/ 


------------------------------------------------------------------------------


  _______________________________________________
  Cascavel-pm mailing list
  Cascavel-pm em pm.org
  http://mail.pm.org/mailman/listinfo/cascavel-pm
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/cascavel-pm/attachments/20070125/fa3043e0/attachment.html 


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