[SP-pm] Res: Res: DBI - placeholders

Daniel ® Antunes danielrantunes em yahoo.com.br
Terça Julho 31 12:40:58 PDT 2007


Opa André, desculpe...
    Me empolguei na minha primeira contribuição no SP-PM.
    Foi mal; infelizmente eu tbem não sei te responder, no entanto um outro amigo (o Rudolfo Rosa) respondeu que vc deve escapar manualmente.
    Nada que uma expressãozinha do tipo :

s/('|")/\\$1/g

    Não resolva, ;)
    Valeu, abraço.
 
Daniel ® Antunes
profissional de informática
gnu/linux user #238553



----- Mensagem original ----
De: André Garcia Carneiro <andre.garcia.carneir em terra.com.br>
Para: saopaulo-pm <saopaulo-pm em mail.pm.org>
Enviadas: Terça-feira, 31 de Julho de 2007 16:14:05
Assunto: Re: [SP-pm] Res: DBI - placeholders


> Oi André,
>     vou te dar um exemplo de placeholders :
> 
>     $sth=$dbh->prepare('INSERT INTO table VALUES (?,?,?)');
>     $sth->execute('placeholder1','2',3);
> 
>     Consiste em vc utilizar no comando SQL o ? ao invés dos dados diretamente.
>     No exemplo ele vai trocar o (?,?,?) pelos três dados fornecidos no execute.
>     Flw.

Valeu Daniel! Eu sei pra que serve um placeholder :D!!!!

A minha pergunta, é se o placeholder do DBI trata caracteres que precisam de escape, por exemplo: 

Imagine que eu quero inserir o seguinte dado no banco de dados:

'Espelho d'água'.  

Como você deve saber, aspas simples servem para limitar strings(pelo menos nos SGBDs que eu conheço). Como
estou usando ORACLE, e por enquanto não estou usando placeholders(o código já estava assim quando cheguei.
Pretendo modificar, mas não tenho autorização por enquanto), o script para simplesmente porque encontra a aspa
simples, e acha que a string terminou. Pra resolver isso "porcamente", basta substituir ' por ''(aspa simples e
outra aspa simples), que ORACLE vai entender que essa aspa é um 'escape'aspa, e irá considerar como parte da
string. 

No entanto imagino que se utilizasse placeholder do DBI, ele resolveria isso para mim, já que ele faz uma série
de verificações. É só curiosidade, não sei se realmente placeholders resolvem isso, pois não achei nada na
documentação(perldoc DBI) sobre isso. Mesmo porque SGBDs diferentes tratam isso de maneira diferente. Só queria
saber se placeholder trata isso automaticamente.... 


De qualquer forma valeu pela sua atenção, Daniel


Cheers!
  

--
André Garcia Carneiro
Developer(Perl/PHP)
Member of "São Paulo Perl Mongers" - http://sao-paulo.pm.org

_______________________________________________
SaoPaulo-pm mailing list
SaoPaulo-pm em pm.org
http://mail.pm.org/mailman/listinfo/saopaulo-pm


      Alertas do Yahoo! Mail em seu celular. Saiba mais em http://br.mobile.yahoo.com/mailalertas/
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/saopaulo-pm/attachments/20070731/819d88fc/attachment.html 


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