Você pode querer atualizar sua postagem para incluir mysql_real_escape_string () ou addslashes () como soluções possíveis ... como em um dos comentários abaixo, o OP afirma que eles estão apenas lendo o arquivo e inserindo.
James B de
3
Os métodos mysql_ * não são recomendados para uso futuro, pois estão obsoletos .
hd1
Essa é a resposta certa, embora atualmente a melhor opção seja usar um dos
Ryan
10
'é o caractere de escape. Portanto, sua string deve ser:
Esta é a caneta de Ashok
Se você estiver usando algum código de front-end, precisará fazer uma substituição de string antes de enviar os dados para o procedimento armazenado.
Por exemplo, em C # você pode fazer
value = value.Replace("'","''");
e, em seguida, passe o valor para o procedimento armazenado.
Não estou inserindo dados manualmente, eu extraio de Arquivo, e haverá vaklues: a caneta de Ashok. Como inserir. criou um procedimento para fazer isso .. como torná-lo correto.
Ashok Gupta
FWIW menor nit: barra invertida é "o caractere de escape"; ''(duas aspas simples) é uma alternativa especial permitida para "escapar" de um caractere de aspas simples.
Qualquer biblioteca que você estiver usando para conversar com o MySQL terá uma função de escape embutida, por exemplo, no PHP você pode usar mysqli_real_escape_string ou PDO :: quote
Não estou inserindo dados manualmente, eu extraio de Arquivo, e haverá valores: caneta de Ashok. Como inserir. criou um procedimento para fazer isso .. como corrigi-lo.
Ashok Gupta
Apenas uma nota This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used.,.
NewBee
7
Se você usar instruções preparadas, o driver tratará de qualquer escape. Por exemplo (Java):
Apenas uma nota This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used.,.
NewBee
6
Existe outra maneira de fazer isso que pode ou não ser mais segura, dependendo da sua perspectiva. Requer MySQL 5.6 ou posterior devido ao uso de uma função de string específica:FROM_BASE64 .
Digamos que você tenha esta mensagem que gostaria de inserir:
"Ah", Nick Quase Sem Cabeça acenou com a mão elegante, "uma questão sem importância ... Não é como se eu realmente quisesse entrar ... Pensei em me inscrever, mas aparentemente não cumpro os requisitos. '- "
Essa citação tem um monte de aspas simples e duplas e seria muito chato inserir no MySQL. Se você estiver inserindo isso de um programa, é fácil escapar das aspas, etc. Mas, se você tiver que colocar isso em um script SQL, você terá que editar o texto (para escapar das aspas) que pode estar sujeito a erros ou sensível a quebra de linha, etc.
Em vez disso, você pode codificar o texto em Base64 para ter uma string "limpa":
A codificação Base64 é uma codificação binária , então é melhor você ter certeza de obter seu conjunto de caracteres correto ao fazer a codificação, porque o MySQL irá decodificar a string codificada em Base64 em bytes e então interpretá-los. Tenha certezabase64 MySQL concorda com a codificação de caracteres (eu recomendo UTF-8).
Eu envolvi a string em 50 colunas para facilitar a leitura no Stack Overflow. Você pode agrupá-lo em qualquer número de colunas que desejar (ou não agrupá-lo) e ainda funcionará.
Apenas uma nota This, mysql_real_escape_string() extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used.,.
Respostas:
Simplificando:
SELECT 'This is Ashok''s Pen.';
Portanto, dentro da string, substitua cada aspa simples por duas delas.
Ou:
SELECT 'This is Ashok\'s Pen.'
Escape it =)
fonte
'é o caractere de escape. Portanto, sua string deve ser:
Se você estiver usando algum código de front-end, precisará fazer uma substituição de string antes de enviar os dados para o procedimento armazenado.
Por exemplo, em C # você pode fazer
e, em seguida, passe o valor para o procedimento armazenado.
fonte
''
(duas aspas simples) é uma alternativa especial permitida para "escapar" de um caractere de aspas simples.Veja minha resposta para "Como escapar caracteres no MySQL"
Qualquer biblioteca que você estiver usando para conversar com o MySQL terá uma função de escape embutida, por exemplo, no PHP você pode usar mysqli_real_escape_string ou PDO :: quote
fonte
This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used.
,.Se você usar instruções preparadas, o driver tratará de qualquer escape. Por exemplo (Java):
fonte
Use este código:
Isso resolverá seu problema, porque o banco de dados não consegue detectar os caracteres especiais de uma string.
fonte
This extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used.
,.Existe outra maneira de fazer isso que pode ou não ser mais segura, dependendo da sua perspectiva. Requer MySQL 5.6 ou posterior devido ao uso de uma função de string específica:
FROM_BASE64
.Digamos que você tenha esta mensagem que gostaria de inserir:
Essa citação tem um monte de aspas simples e duplas e seria muito chato inserir no MySQL. Se você estiver inserindo isso de um programa, é fácil escapar das aspas, etc. Mas, se você tiver que colocar isso em um script SQL, você terá que editar o texto (para escapar das aspas) que pode estar sujeito a erros ou sensível a quebra de linha, etc.
Em vez disso, você pode codificar o texto em Base64 para ter uma string "limpa":
SWtGb0xDSWdUbVZoY214NUlFaGxZV1JzWlhOeklFNXBZMnNnZD JGMlpXUWdZVzRnWld4bFoyRnVkQ0JvWVc1a0xDQWlZU0J0WVhS MFpYCklnYjJZZ2JtOGdhVzF3YjNKMFlXNWpaUzRnTGlBdUlDNG dTWFFuY3lCdWIzUWdZWE1nZEdodmRXZG9JRWtnY21WaGJHeDVJ SGRoYm5SbApaQ0IwYnlCcWIybHVMaUF1SUM0Z0xpQlVhRzkxWj JoMElFa25aQ0JoY0hCc2VTd2dZblYwSUdGd2NHRnlaVzUwYkhr Z1NTQW5aRzl1SjMKUWdablZzWm1sc2JDQnlaWEYxYVhKbGJXVn VkSE1uSUMwaUlBPT0K
Algumas notas sobre a codificação Base64:
base64
MySQL concorda com a codificação de caracteres (eu recomendo UTF-8).Agora, para carregar isso no MySQL:
INSERT INTO my_table (text) VALUES (FROM_BASE64(' SWtGb0xDSWdUbVZoY214NUlFaGxZV1JzWlhOeklFNXBZMnNnZD JGMlpXUWdZVzRnWld4bFoyRnVkQ0JvWVc1a0xDQWlZU0J0WVhS MFpYCklnYjJZZ2JtOGdhVzF3YjNKMFlXNWpaUzRnTGlBdUlDNG dTWFFuY3lCdWIzUWdZWE1nZEdodmRXZG9JRWtnY21WaGJHeDVJ SGRoYm5SbApaQ0IwYnlCcWIybHVMaUF1SUM0Z0xpQlVhRzkxWj JoMElFa25aQ0JoY0hCc2VTd2dZblYwSUdGd2NHRnlaVzUwYkhr Z1NTQW5aRzl1SjMKUWdablZzWm1sc2JDQnlaWEYxYVhKbGJXVn VkSE1uSUMwaUlBPT0K '));
Isso será inserido sem qualquer reclamação e você não precisará escapar manualmente nenhum texto dentro da string.
fonte
Você deve escapar dos caracteres especiais usando o
\
caractere.Torna-se:
fonte
Se você quiser manter o apóstrofo (') no banco de dados, use o código abaixo
$ new_value pode armazenar no banco de dados.
fonte
Você pode usar este código,
se mysqli_real_escape_string () não funcionar.
fonte
Em PHP, use mysqli_real_escape_string .
Exemplo do Manual do PHP:
fonte
fonte
Se você estiver usando PHP, apenas use a função addslashes ().
Addlashes do manual do PHP
fonte
Para acesso programático, você pode usar marcadores de para escapar automaticamente de caracteres não seguros para você.
Em Perl DBI, por exemplo, você pode usar:
fonte
Use addlahes () ou mysql_real_escape_string ().
fonte
This, mysql_real_escape_string() extension was deprecated in PHP 5.5.0, and it was removed in PHP 7.0.0. Instead, the MySQLi or PDO_MySQL extension should be used.
,.Do jeito que eu faço, usando Delphi:
TheString para "escapar":
Solução:
Resultado:
Esta função irá substituir todos os Char (39) por "\ '" permitindo a você inserir ou atualizar campos de texto no MySQL sem nenhum problema.
Funções semelhantes são encontradas em todas as linguagens de programação!
fonte
Talvez você possa dar uma olhada em função
QUOTE
no manual do MySQL.fonte