PHP-MySQL: Inserindo aspas simples, aspa dupla no banco de dados
Um problema que encontrei e compartilho com vocês, é que ao inserir um dado no banco de dados contendo alguns tipos de caracteres, podem causar erro.
Caracteres que podem causar problemas de inserção: apóstrofo (‘), aspas(“) e barra invertida(\).
Exemplo de texto a ser gravado:
Olá D’arrrrr, seja bem-vindo ao ‘linhadecomando.com’.
“Imagine que você digitou o texto acima num campo do seu formulário e agora quer gravar no banco. Se fizer o insert direto deste texto vai dar erro”.
Para resolver este problema você vai precisar da função addslashes();
segue exemplo:
<? $titulo_noticia = addslashes($_POST['titulo_noticia']); INSERT INTO noticias (titulo_noticia) VALUES ('$titulo_noticia'); ?> |
Dica: Primeiro, converta a string (texto) com a função addslashes() e então, execute o INSERT.
Outra solução:
https://www.php.net/manual/en/filter.filters.sanitize.php
$titulo_noticia = filter_var($_POST['titulo_noticia'], FILTER_SANITIZE_MAGIC_QUOTES); |
Até a próxima!
obrigado. 🙂
Muito bom!!
Alelúia!! 😀
Bastante útil. Obrigado!
Muito bom, Obrigado
Valeu cara , eu estava com este problema a meses.
Para quem quiser corrigir o chatset , usem.
utf8_decode();
MUITO BOM… .. ESTAVA COM PROBLEMAS EM INSERIR UMA DESCRIÇÃO NO BD USANDO O PLUGIN CKEDITOR(EDITOR DE TEXTO)… COM ESSA SIMPLES FUNÇÃO .. CONSEGUI ….
VLW.. CONTINUE ASSIM;…
Muito bom amigo, estava corrento atras de um script que faria isso e acabei achando uma função do próprio Php que ficou melhor ainda !
Obrigado por compartilha vosso conhecimento!
Funcionou perfeitamente, valeu a contribuição.
Muito bom cara.
Muito obrigado. Mesmo sendo simples o problema me ajudou a aprender uma nova coisa e resolver um problema em meu gerenciador.
Abraços
Até hoje isso ta ajudando, valew
OBRIGADOOOOOOOOOOOOOO
Muito bom! Valeu demais!
Muito bom! Obrigado
Salvou meu dia! Parabéns!!!
ajudou muitooo cara, muito obrigado mesmo!
Muito boa a dica. Me ajudou muito!!!
Ótima dica!
Opa valeu!!!!
Não conhecia essa função do php.
Abraço, obrigado pela ajuda!!!!
usando essa função contínua colocando barra invertida, ex: insiro “lider”, grava: \”lider\”
Parabéns, obrigadoo
Estou com o problema da descricao conter aspas simples e duplas. Da pau na tabela ou no html. Consigo gravar o campo
Chave de Impacto 1/2" Mini 55' kgfm
mas na leitura inserido em um campo input ele corta tudo depois das aspas simples.Edu,
poderia enviar o código de exibição no input.
Att.
Tiago
Por favor;
Usei isso no form na linha de “Cadastar”
// Cadastro de Usuario
if ( isset($_POST[‘cadastrar’]) ):
$nome_atividade = $_POST[‘nome_atividade’];
$nome_livro = addslashes($_POST[‘nome_livro’]);
O Resultado foi esse ao cadastrar:
D\’Aspas Simples
Na linha de Alterar:
// Alterar Usuario
if ( isset($_POST[‘alterar’]) ) {
$id = $_POST[‘id_uii’];
$nome_atividade = $_POST[‘nome_atividade’];
$nome_livro = addslashes($_POST[‘nome_livro’]);
Visualizo no form modal o mesmo campo:
D’Aspas Simples
Será que terei que colocar nas function
public function insert()
e
public function update($id) {
Tenho outros campos que terei que resolver pois vai acontecer digitação com (‘). Retirando a função addslashers() observo que cadastra no banco com (‘) na “Lista” também mostra (‘), mas torna-se inviável o form modal “Alterar”, ou seja, deixa de editar não só o campo que contem o texto com (‘), mas sim todos.
Obrigado
Tiago, recebi seu e-mail informando que estava de recesso.
Com relação ao caso da (‘) apóstrofe continuo o problema somente para o form modal, ou seja, quando clico em “Alterar”. O resultado teria que ser igual aos outros campos onde mostra todos os registros. Se Cadastrar em um campo D’Alila, esse nome aparece perfeitamente na lista de registro (index.php). Agora se clicar no Botão alterar desse registro com D’Alivia observa-se que todos os registros desse id não aparecem no form Alterar.
Vou colocar o código aqui, mas não sei se vai ficar ruim para analisar:
Observação: (teste apenas no campo ‘nome_livro’) Fui orientado para colocar filter_input(INPUT_POST, ‘nome_livro’,
Repare que coloquei tanto nas linhas dp Cadastramento(insert) como nas linhas do update (Alterar).
Repito Cadastrar creio que funcionou, mas Alterar prejudicar todos o formulário modal.
setNome_atividade($nome_atividade);
$usuario->setNome_livro($nome_livro);
$usuario->setNome_autor($nome_autor);
$usuario->setNome_editora($nome_editora);
$usuario->setQuant_fl($quant_fl);
$usuario->setFl_parei($fl_parei);
$usuario->setData_inicio($data_inicio);
$usuario->setData_termino($data_termino);
$usuario->setData_paralisacao($data_paralisacao);
$usuario->setObservacao($observacao);
if ($usuario->insert()) {
echo ‘
×
OK! Incluido com sucesso!!! ‘;
} else {
echo ‘
×
OK! Erro ao alterar!!! ‘;
}
endif;
//exclusao de Usuario
if (isset($_POST[‘excluir_ui’])){
$id = $_POST[‘id_ui’];
$usuario->delete($id);
}
// Alterar Usuario
if ( isset($_POST[‘alterar’]) ) {
$id = $_POST[‘id_uii’];
$nome_atividade = $_POST[‘nome_atividade’];
$nome_livro = filter_input(INPUT_POST, ‘nome_livro’, FILTER_SANITIZE_STRING);
$nome_autor = $_POST[‘nome_autor’];
$nome_editora = $_POST[‘nome_editora’];
$quant_fl = $_POST[‘quant_fl’];
$fl_parei = $_POST[‘fl_parei’];
$data_inicio = !$_POST[‘data_inicio’] ? NULL :
date(‘Y-m-d’, strtotime(str_replace(‘/’, ‘-‘,$_POST[‘data_inicio’])));
$data_termino = !$_POST[‘data_termino’] ? NULL :
date(‘Y-m-d’, strtotime(str_replace(‘/’, ‘-‘,$_POST[‘data_termino’])));
$data_paralisacao = !$_POST[‘data_paralisacao’] ? NULL :
date(‘Y-m-d’, strtotime(str_replace(‘/’, ‘-‘,$_POST[‘data_paralisacao’])));
$observacao= $_POST[‘observacao’];
$usuario->setNome_atividade($nome_atividade);
$usuario->setNome_livro($nome_livro);
$usuario->setNome_autor($nome_autor);
$usuario->setNome_editora($nome_editora);
$usuario->setQuant_fl($quant_fl);
$usuario->setFl_parei($fl_parei);
$usuario->setData_inicio($data_inicio);
$usuario->setData_termino($data_termino);
$usuario->setData_paralisacao($data_paralisacao);
$usuario->setObservacao($observacao);
$usuario->update($id);
}
?>
****
Obrigado pela atenção.
Carlos,
faz o seguinte:
Tela de Cadastro: aplica a função addslashes() antes do insert.
Tela de Edição: aplica a função stripslashes() no campo de exibição e addslashes() antes do update.
Muito bom… Me ajudou a resolver meu problema com uma query.
2 aspas simples no SQL SERVER e Postgres
Exemplo:
Erro: SELECT ‘aspas simples ‘s’
Correção: SELECT ‘aspas simples ”s’
Muito BOM CARA!!! Eu estava precisando disso msm.
2021 e está foi a solução mais simples, direta e objetiva que encontrei para este problema. Parabéns meu amigo e muito obrigado.
Olá gente,
Minha sina são as aspas.
Digitar todas a datas ano, mês e dia é possível, mas tendo uma PROCEDURE para fazer isso é muito bom.
Ocorre que venho recebendo essa mensagem de erro e acredito que senha a aspa. Mensagem de erro:
“Erro
Comando SQL: Copiar
CREATE PROCEDURE data_frases;
Mensagens do MySQL : Documentação
#1064 – Você tem um erro de sintaxe no seu SQL próximo a ” na linha 1
O código é esse:
Erro
Comando SQL: Copiar
CREATE PROCEDURE data_frases;
Mensagens do MySQL : Documentação
#1064 – Você tem um erro de sintaxe no seu SQL próximo a ” na linha 1