reunix Posted December 5, 2011 Report Share Posted December 5, 2011 Olá pessoal andei procurando uma solução por um tempo e não consegui resolver meu probleminha,no caso é somente importar um arqujvo txt pro banco de dados q no meu caso é Postgres, o script ta funcionando 99%,1% é justamente o erro q ocorre, quando um registro do TXT contém uma aspas simples o sistema da erro:tipo:LOJÃO D' VIDROSMARIA D' CARMOScript de importação:// muito simples $filename = "../../arquivos/".$arquivo; $handle = fopen($filename, 'r'); $data = fread($handle, filesize($filename)); $rowsArr = explodeRows($data); $lineDetails = explodeTabs($rowsArr[0]); dai eu acesso os campos da seguinte forma: $nome = trim($lineDetails[4]); $endereco = trim($lineDetails[7]); Agora para gravar no banco $query = "UPDATE corretores SET nome ='$nome', end_fenacor ='$endereco' WHERE cic = '$cic' "; já tentei de várias formas para extrarir a informacao: 1. $nome = trim($lineDetails[4]); 2. $nome = addslashes(trim($lineDetails[4])); 3. $nome = htmlentities(addslashes(trim($lineDetails[4]))); e para gravar tentei de outras formas também!!! UPDATE corretores SET nome=".addslashes($nome).", endereco ='$endereco' ... ERRO "UPDATE corretores SET nome =".$nome.", endereco =".$endereco." ... ERRO "UPDATE corretores SET nome =".$nome.", endereco =\"'$endereco'\" ... ERRO Mensagem do erro: no caso de tentar gravar dessa forma: update set nome = '$nome'.... Warning: pg_query() [function.pg-query]: Query failed: ERRO: erro de sintaxe em ou próximo a "ARCE" LINE 3: nome ='BERTINE ROSE D'ARCE CANDIDO',Quem já passou por isso por favor me digam onde estou errando!!Agradeço desde jáat+ Quote Link to comment Share on other sites More sharing options...
0 mJi Posted December 5, 2011 Report Share Posted December 5, 2011 Já tentou com str_replace()?É possível trocar o caractere (aspas simples) por algum outro. Quote Link to comment Share on other sites More sharing options...
0 rickayron Posted December 5, 2011 Report Share Posted December 5, 2011 Olá pessoal andei procurando uma solução por um tempo e não consegui resolver meu probleminha,no caso é somente importar um arqujvo txt pro banco de dados q no meu caso é Postgres, o script ta funcionando 99%,1% é justamente o erro q ocorre, quando um registro do TXT contém uma aspas simples o sistema da erro:tipo:LOJÃO D' VIDROSMARIA D' CARMOScript de importação:// muito simples $filename = "../../arquivos/".$arquivo; $handle = fopen($filename, 'r'); $data = fread($handle, filesize($filename)); $rowsArr = explodeRows($data); $lineDetails = explodeTabs($rowsArr[0]); dai eu acesso os campos da seguinte forma: $nome = trim($lineDetails[4]); $endereco = trim($lineDetails[7]); Agora para gravar no banco $query = "UPDATE corretores SET nome ='$nome', end_fenacor ='$endereco' WHERE cic = '$cic' "; já tentei de várias formas para extrarir a informacao: 1. $nome = trim($lineDetails[4]); 2. $nome = addslashes(trim($lineDetails[4])); 3. $nome = htmlentities(addslashes(trim($lineDetails[4]))); e para gravar tentei de outras formas também!!! UPDATE corretores SET nome=".addslashes($nome).", endereco ='$endereco' ... ERRO "UPDATE corretores SET nome =".$nome.", endereco =".$endereco." ... ERRO "UPDATE corretores SET nome =".$nome.", endereco =\"'$endereco'\" ... ERRO Mensagem do erro: no caso de tentar gravar dessa forma: update set nome = '$nome'.... Warning: pg_query() [function.pg-query]: Query failed: ERRO: erro de sintaxe em ou próximo a "ARCE" LINE 3: nome ='BERTINE ROSE D'ARCE CANDIDO',Quem já passou por isso por favor me digam onde estou errando!!Agradeço desde jáat+post o modelo do arquivo.como está escrito e o que você quer pegar. Quote Link to comment Share on other sites More sharing options...
0 reunix Posted December 5, 2011 Author Report Share Posted December 5, 2011 Já tentou com str_replace()?É possível trocar o caractere (aspas simples) por algum outro.Olá Mji, pensei nisso mas acredito que ficará lento, pois terei que substirir varios campos: nome, endereco, cidade, bairroe a leitura é feita letra-a-letramas obrrigado, se tiver outra sugestão!!at+Olá pessoal andei procurando uma solução por um tempo e não consegui resolver meu probleminha,no caso é somente importar um arqujvo txt pro banco de dados q no meu caso é Postgres, o script ta funcionando 99%,1% é justamente o erro q ocorre, quando um registro do TXT contém uma aspas simples o sistema da erro:tipo:LOJÃO D' VIDROSMARIA D' CARMOScript de importação:// muito simples $filename = "../../arquivos/".$arquivo; $handle = fopen($filename, 'r'); $data = fread($handle, filesize($filename)); $rowsArr = explodeRows($data); $lineDetails = explodeTabs($rowsArr[0]); dai eu acesso os campos da seguinte forma: $nome = trim($lineDetails[4]); $endereco = trim($lineDetails[7]); Agora para gravar no banco $query = "UPDATE corretores SET nome ='$nome', end_fenacor ='$endereco' WHERE cic = '$cic' "; já tentei de várias formas para extrarir a informacao: 1. $nome = trim($lineDetails[4]); 2. $nome = addslashes(trim($lineDetails[4])); 3. $nome = htmlentities(addslashes(trim($lineDetails[4]))); e para gravar tentei de outras formas também!!! UPDATE corretores SET nome=".addslashes($nome).", endereco ='$endereco' ... ERRO "UPDATE corretores SET nome =".$nome.", endereco =".$endereco." ... ERRO "UPDATE corretores SET nome =".$nome.", endereco =\"'$endereco'\" ... ERRO Mensagem do erro: no caso de tentar gravar dessa forma: update set nome = '$nome'.... Warning: pg_query() [function.pg-query]: Query failed: ERRO: erro de sintaxe em ou próximo a "ARCE" LINE 3: nome ='BERTINE ROSE D'ARCE CANDIDO', Quem já passou por isso por favor me digam onde estou errando!! Agradeço desde já at+ post o modelo do arquivo. como está escrito e o que você quer pegar. RICK, segue o modelo do arquivo: CIC COD_CORR TIP_PESSOA SITUACAO NOME IDENTIDADE ORGAO ENDERECO BAIRRO CIDADE CEP FONE1 FONE2 EMAIL DAT_NASC DAT_CONCES UF SEXO VENCIMENTO ULTIMA_ALTERACAO CAP_SOCIAL 00000023959479 058916.150002569 F N MARIA2 OK DE POMPEIA CAVALCANTI SILVA CO.342620 SSP/PE END. AV. CARLOS DE LIMA CAVALCANTI, 214 BAIRRO OK NOVO CIDADEA 53030260 8134 86124309 GUTES@NASSAU.COM.BR 18/05/1929 01/10/1989 PE F 29/08/2005 600.00 00000001422772 10.0000445 F ELIANE VERCOSA DE MELLO 380.946 SSP/PE AV. BOA VIAGEM, 4000 1902 BOA VIAGEM RECIFE 51021-000 81 34653316 LOURD4@HOTMAIL.COM 12/11/1935 01/10/1989 PE F 16/12/2013 04/09/2008ele está delimitado por tabulação, não estou tento problemas em ler os dados, somente na hora de gravar, que provavelmente é na instrução do (UPDATE SET), quando ele ler do arqivo contento a aspa simples, meu script se quebar: $query = " UPDATE TABL SET NOME = '$nome' WHERE ID = '$id' "; provavelmente por isso o erro:Warning: pg_query() [function.pg-query]: Query failed: ERRO: erro de sintaxe em ou próximo a "ARCE" LINE 3: nome ='BERTINE ROSE D'ARCE CANDIDO',agradeço sua atenção ;se puder ajudar.at+ Quote Link to comment Share on other sites More sharing options...
0 reunix Posted December 7, 2011 Author Report Share Posted December 7, 2011 Alguém? Quote Link to comment Share on other sites More sharing options...
0 Willian Gustavo Veiga Posted December 7, 2011 Report Share Posted December 7, 2011 Tente com a função pg_escape_string.Um abraço. Quote Link to comment Share on other sites More sharing options...
0 reunix Posted December 8, 2011 Author Report Share Posted December 8, 2011 Tente com a função pg_escape_string.Um abraço.OK, vou tentar willian obrigado, funcionou com o str_replace q o Mji comentou apesar q pode ficar mais pesado dependendo do aquivo, mas, por hora resolveu,obgat+ Quote Link to comment Share on other sites More sharing options...
Question
reunix
Olá pessoal andei procurando uma solução por um tempo e não consegui resolver meu probleminha,
no caso é somente importar um arqujvo txt pro banco de dados q no meu caso é Postgres, o script ta funcionando 99%,
1% é justamente o erro q ocorre, quando um registro do TXT contém uma aspas simples o sistema da erro:
tipo:
LOJÃO D' VIDROS
MARIA D' CARMO
Script de importação:
dai eu acesso os campos da seguinte forma: Agora para gravar no banco já tentei de várias formas para extrarir a informacao: e para gravar tentei de outras formas também!!! ERRO ERRO ERRO Mensagem do erro: no caso de tentar gravar dessa forma: update set nome = '$nome'....Quem já passou por isso por favor me digam onde estou errando!!
Agradeço desde já
at+
Link to comment
Share on other sites
6 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.