Ir para conteúdo
Fórum Script Brasil
  • 0

Retirar o apóstrofo


fabio_siqueira

Pergunta

Galera boa tarde!

 

Estou desenvolvendo um sistema simples aqui no meu trabalho, porém estou com um problema

quando vou importar um arquivo csv para o mysql.

Quando o PHP "acha" um apóstrofo no meio do nome, ele para de subir os dados no mysql.

 

Acredito que seja por causa do "sql injection" mas não sei como fazer ele aceitar esses caracteres especiais.

Estou usando a conexão Mysqli mas de forma estrutural.

 

Segue o trecho do código:

// conectando no banco
$conexao = mysqli_connect($servidor,$usuario,$senha,$banco);
if (mysqli_connect_errno($conexao)){
	echo "Problemas para conectar no banco de dados";
	die();
}

//query para insert na tabela relatorio
$filename = $_GET['arquivocsv2'];
$abraArq = fopen($filename, "r");
while(($row = fgetcsv($abraArq,2048,";"))!==FALSE) {

//condicional de qual radio button esta selecionado	
if ($radio == 'Relatorio'){$sql = "insert into relatorio (DocumentoSD,Descricao,CodCliente,Cliente,Regiao,DataDocumento,Material,Condicoes,Plano) values('$row[0]','$row[4]','$row[5]','$row[6]','$row[7]','$row[10]','$row[11]','$row[17]','$row[29]')";}

é exatamente o array: $row[6] onde possui registros com apóstrofo.

 

Obrigado!

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Você pode usar addlashes() para escapar os caracteres especiais. Mas a solução ideal seria utilizar Prepared Statements.

Veja: 

http://rberaldo.com.br/como-atualizar-php-mysql-mysqli/

http://rberaldo.com.br/seguranca-em-sistemas-de-login-protecao-contra-sql-injection/

 

 

Não sei se você sabe, mas nem precisa passar isso tudo pelo PHP. O próprio MySQL consegue importar arquivos CSV. Dê uma pesquisada sobre isso.

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado Beraldo!

funcionou, usei o  addlashes

Segue o código como ficou caso alguém precise algum dia:

//condicional de qual radio button esta selecionado	
if ($radio == 'Relatorio'){$sql = "insert into relatorio (DocumentoSD,Descricao,CodCliente,Cliente,Regiao,DataDocumento,Material,Condicoes,Plano) values('$row[0]','$row[4]','$row[5]','".addslashes($row[6])."','$row[7]','$row[10]','$row[11]','$row[17]','$row[29]')";}

vou estudar de como usar o  Prepared Statements.

Eu sei que o mysql faz isso, mas é que na ferramentinha que eu estou criando, vai ser para algumas pessoas aqui do meu trabalho fazer esse insert e dps na própria ferramenta

vai ter opções de consulta com alguns left joins etc..além de guardar no histórico esses arquivos :-)

 

Mais uma vez Muito Obrigado!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...