[Cascavel-pm] [Off-Topic] UPDATE

Luis Motta Campos luismottacampos em yahoo.co.uk
Segunda Julho 23 08:03:01 PDT 2007


On Jul 23, 2007, at 4:33 PM, Nelson Ferraz wrote:
> Em primeiro lugar, repare que o exemplo que você nos mandou usa
> backticks (`...`) ao invés de aspas simples ('...') ou duplas
> ("..."). Não sei se este é um padrão SQL universalmente aceito; eu,
> pessoalmente, nunca usei.

   Não se pode chamar "padrão" - é mais uma idiosincrasia do MySQL.

> Em segundo lugar, verifique se a variável $texto_todo passou pelo
> método quote(), para "escapar" quotes dentro de quotes.
>
> O que nos leva diretamente ao terceiro ponto: evite embutir variáveis
> dentro do SQL -- prefira usar prepare(), indicando os placeholders
> com "?", seguido por execute(), onde você passa as variáveis. Por
> exemplo:
>
> 	my $sth = $dbh->prepare("INSERT INTO sales (product_code, qty,
> price) VALUES (?, ?, ?)") || die $dbh->errstr;
> 	$sth->execute($product_code, $qty, $price) || die $dbh->errstr;

   Didático, e simples.
   Mas por favor tente usar

     DBI->connect( $dsn, $user, $passwd, { RaiseErrors => 1,  
PrintErrors => 0, AutoCommit => 0 } )

   Com estas opções:

   1. Você transforma erros da base de dados em exceções, o que é  
muito recomendado;
   2. Você evita que o teu programa "vaze" dados e avisos  
desnecessáriamente;
   3. Você é obrigado a dizer "dbi_commit" ao final de cada  
transação, o que também é importante.

   Tão aí meus dois centavos
   Putamplexos
--
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}




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