Eu não posso inserir apóstrofos no MySQL

O MySQL requer tratamento cuidadoso de texto para o manuseio de apóstrofos.

Delimitador de apóstrofo

Na versão SQL do MySQL, o início e o final de uma string são indicados por aspas simples ou aspas duplas. Os dois exemplos a seguir são válidos:

INSERT INTO COMPANY_TABLE (nome da empresa) VALUES 'The Fish Shack';

INSERT INTO COMPANY_TABLE (company_name) VALORES "The Fish Shack";

No entanto, o exemplo a seguir gera um erro:

INSERT INTO COMPANY_TABLE (tag_line) VALORES 'Coma no Joe's - é boa comida!';

O SQL interpreta a string como "'Eat at Joe'", com tudo após o segundo apóstrofo como errado. O texto a seguir não resolve o problema:

INSERT INTO COMPANY_TABLE (tag_line) VALORES "Comer no Joe's - é boa comida!";

Isso funcionaria se o texto tivesse um único apóstrofo entre aspas duplas, mas este texto tem dois. Além disso, como algumas linguagens de programação de páginas da Web usam aspas duplas, convém evitar usá-las no seu SQL.

Os apóstrofos duplos e a barra invertida

A solução é determinada pelo MySQL interpretando os dois apóstrofos em fila '', como uma aspa simples para dados de caracteres. Usando um caractere de barra invertida, ou "\", imediatamente antes de um apóstrofo nos dados tem o mesmo efeito. O MySQL trata a combinação da barra invertida e outros caracteres especiais como uma seqüência de escape, criando um caractere dos dois. Os exemplos a seguir resolvem o problema:

INSERT INTO COMPANY_TABLE (tag_line) VALORES comem no Joe's - é boa comida! ';

INSERT INTO COMPANY_TABLE (tag_line) VALORES 'Coma no Joe \' s - é boa comida! ';

Ao escrever programas para criar sentenças no MySQL, a primeira coisa a fazer é explorar todas as strings de texto e adicionar um apóstrofo ou uma barra invertida antes dos apóstrofos nos dados.

Função Addslashes

A linguagem de programação web PHP é freqüentemente usada em combinação com o MySQL, que possui uma função chamada addslashes para converter automaticamente apóstrofos. Basta executar a função dos dados do tipo de string, como neste exemplo:

$ tag_line = addslashes ($ tag_line);

Função de Stripslashes

Depois de ter convertido apóstrofos para as variáveis ​​de dados de barra invertida e apóstrofos, talvez você precise converter de volta para dados normais. A função stripslashes do PHP realiza essa tarefa em uma única etapa. Use-o como o exemplo a seguir:

$ tag_line = stripslashes ($ tag_line);