terça-feira, 28 de agosto de 2012

Cadastrar texto com aspas no banco de dados - PHP & MySQL

Uma coisa que é muito chata, e acaba sendo um transtorno pra quem está iniciando, é cadastrar no banco de dados um texto que contenha aspas...
Quem nunca se deparou com o erro: 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 ''texto'')' at line 1

O erro ocorre porque a aspa causa uma confusão no comando SQL, veja porque:



Imagine a seguinte linha:
mysql_query("INSERT INTO tabela(texto) VALUES('texto 'com' aspas')");
A palavra com está entre aspas simples, o que causa uma confusão no comando..
Repare as aspas antes de texto e depois de aspas, elas delimitam o texto que será inserido no banco de dados, e essas aspas que estão no meio do texto fazem com que o SQL se confunda.

A solução para isso seria colocar as aspas com Caractere de Escape, dessa forma:
mysql_query("INSERT INTO tabela(texto) VALUES('texto \'com\' aspas')");
As contra-barras informam ao SQL que aquelas aspas devem ser inseridas também no banco de dados.

Mas como adicionar contra-barras em todo o meu texto???

É aqui que vem o segredo... Basta usar a função addslashes() que ela faz todo o trabalho pra você.
Dessa forma:


$texto = "Texto que 'contem' aspas'''''";
$texto = addslashes($texto);
echo $texto;


A saída será: Texto que \'contem\' aspas\'\'\'\'\'

Com isso você conseguirá cadastrar textos em seu banco de dados normalmente..

Ver também:
addslashes()
stripslashes()
Caractere de Escape

Até o proximo post!! ;)