A documentação do MySQL diz que deveria ser \'
. No entanto, scite e mysql mostram que ''
funciona. Eu vi isso e funciona. O que devo fazer?
147
A documentação do MySQL diz que deveria ser \'
. No entanto, scite e mysql mostram que ''
funciona. Eu vi isso e funciona. O que devo fazer?
''
ou não\'
?\'
é MySQL específico, enquanto''
é compatível com ANSI SQL, se não me enganoRespostas:
A documentação do MySQL que você cita realmente diz um pouco mais do que você menciona. Também diz:
(Além disso, você vinculou à versão MySQL 5.0 da Tabela 8.1. Sequências de escape de caracteres especiais e a versão atual é 5.6 - mas a tabela 8.1 atual . Sequências de escape de caracteres especiais são bastante semelhantes.)
Eu acho que a nota
backslash_quote (string)
do Postgres no parâmetro é informativa:Isso me diz que usar um caractere de aspas simples duplicado é uma escolha geral e de longo prazo melhor do que usar uma barra invertida para escapar da aspas simples.
Agora, se você também quiser adicionar opções de linguagem, escolha do banco de dados SQL e suas peculiaridades não padrão e escolha da estrutura de consulta à equação, poderá ter uma escolha diferente. Você não fornece muita informação sobre suas restrições.
fonte
O SQL padrão usa aspas dobradas; O MySQL precisa aceitar isso para ser razoavelmente compatível.
fonte
'
" dentro de uma sequência citada com "'
" pode ser escrito como "''
" . Um ""
" dentro de uma string citada com ""
" pode ser escrito como """
". Preceda o caractere de citação com um caractere de escape ("` `").O que eu acredito que user2087510 significava era:
Eu também usei isso com sucesso.
fonte
basta escrever
''
no lugar de'
quero dizer duas vezes'
fonte
Aqui está um exemplo:
Basta usar aspas duplas para incluir a aspas simples.
Se você insistir em usar aspas simples (e a necessidade de escapar do personagem):
fonte
Existem três maneiras pelas quais estou ciente. O primeiro não é o mais bonito e o segundo é o caminho comum na maioria das linguagens de programação:
'I mustn''t sin!'
\
antes da citação simples'
:'I mustn\'t sin!'
"I mustn't sin!"
fonte
\'
que é usada por muitas linguagens de programação, mas''
é suportada por mais dialetos SQL; portanto, usar a opção 1 é melhor para compatibilidade. O sqlite, por exemplo, não funciona com escapes de barra invertida.Substitua a sequência
onde value é sua string que será armazenada em seu banco de dados.
https://www.npmjs.com/package/mysql-apostrophe
fonte
Eu acho que se você tiver algum ponto de dados com apóstrofo, você pode adicionar um apóstrofo antes do apóstrofo
por exemplo. 'Este é o lar de João'
Aqui o MYSQL assume duas frases 'Este é o lugar de John'
Você pode colocar 'Este é o lugar de John'. Eu acho que deveria funcionar assim.
fonte
No PHP, eu gosto de usar mysqli_real_escape_string () que escapa caracteres especiais em uma string para uso em uma instrução SQL.
consulte https://www.php.net/manual/en/mysqli.real-escape-string.php
fonte
Possivelmente fora de tópico, mas talvez você tenha vindo aqui procurando uma maneira de higienizar a entrada de texto de um formulário HTML, para que, quando um usuário insira o caractere apóstrofo, ele não gere um erro ao tentar gravar o texto em um SQL tabela baseada em um banco de dados. Existem algumas maneiras de fazer isso, e você também pode querer ler sobre injeção de SQL, mas uma opção simples no PHP é usar a função htmlspecialchars () que converterá todos os seus apóstrofos nos
'
quais é possivelmente o que você deseja armazenar de qualquer forma.fonte