Ol�, Pequeno Gafanhoto! Grande revolta eu ver...

A necessidade de s�mbolos de escape (tipicamente o backslash) vem da necessidade de
inserir em strings s�mbolos que n�o poderiam (ou dariam trabalho para) ser inseridos de
outra forma.
Caracteres especiais, como TAB, CR e LF, n�o tem uma representa��o gr�fica. Por isso,
linguagens como C utilizam representa��es como \t e \n.
Outros s�mbolos, como " e ', s�o usados como delimitadores. Bancos de dados como MySQL
usam \" e \'. O Oracle (um dos "grandes SGBDs" a que voc� se referiu) parece usar '' 
(pelo
menos neste exemplo: btitle 'from G. B. Talbot''s Ledger').
Em PHP, o $ indica o nome de vari�veis. Assim, para imprimir um $, voc� precisa 
escrever
\$.
Na verdade, o que voc� aponta como um defeito do MySQL, � uma constante em diversas
linguagens e, por isso, tem suas pr�prias solu��es.
O PHP, por exemplo, pode fazer o tratamento autom�tico dos dados que chegam de um
formul�rio, adicionando um backslash a caracteres como \,' e " - a op��o 
magic_quotes_gpc
j� vem ligada por default no php.ini. Se preferir, voc� pode fazer isso explicitamente 
com
a fun��o addslashes().
Se voc� n�o fizer nenhum tratamento dos dados fornecidos pelo usu�rio, fica f�cil de 
fazer
uma SQL injection e emendar no seu SELECT um DROP TABLE bairro ou coisa pior. Mesmo que
com outro SGBD voc� n�o tivesse o problema do backslash, um sistema decente ainda teria
que verificar os dados antes de rodar o SQL.

Augusto

----- Original Message -----
From: "Leonardo Pinto" <[EMAIL PROTECTED]>
To: "Lista Conectiva (E-mail)" <[EMAIL PROTECTED]>
Sent: Thursday, July 15, 2004 11:40 AM
Subject: (linux-br) MySQL n�o aceita "\" em WHERE



Ol� Linuxers,

Estou muito decepcionado com o MySQL. Sei que existem
"N"s argumentos para este comportamento. Por�m n�o aceito
como resposta nenhum deles. O fato � que: Imaginem um
campo bairro onde um usu�rio digita "S�O MIGUEL\S�O RAFAEL"
E ap�s isto ele deseja fazer uma consulta:
select * from BAIRRO where CAMPO1 = "S�O MIGUEL\S�O RAFAEL"
Simplesmente esta situa��o n�o poder� ser realizada, pois
o pequeno projeto MySQL n�o suporta "\", ele achar� que
estamos editando um arquivo com linefeeds. heerrrgrrrrr

Sds,

Leonardo Pinto
OpenLogic Inform�tica Ltda.
Tel.: (71) 316-1235/8822-1727
[EMAIL PROTECTED]

---------------------------------------------------------------------------
Esta lista � patrocinada pela Conectiva S.A. Visite http://www.conectiva.com.br

Arquivo: http://bazar2.conectiva.com.br/mailman/listinfo/linux-br
Regras de utiliza��o da lista: http://linux-br.conectiva.com.br
FAQ: http://www.zago.eti.br/menu.html

Responder a