Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

carcleo

[Resolvido] Não consigo gravar

Mensagens Recomendadas

carcleo

Pessoal. Boa tarde!

Estou com o seguinte problema:

Baixei o Mysql MySql 6.0.11 x86.msi no site do MySQL.

Estou usando o seguinte script para gravar com php:

$select_produtos_string=
"
  select id_produtos
  from produtos
  where
 nome_produtos = '".$_POST['nome_cad_produtos']."' and
 id_categorias_produtos = ".$_POST['categoria_cad_produtos']." and
 referencia_produtos = '".$_POST['referencia_cad_produtos']."'";

$select_produtos = $conexao->query($select_produtos_string);
if($select_produtos->num_rows==0)
{
$cadastro_produtos_string="
insert into produtos (
  id_categorias_produtos,
  nome_produtos,
  referencia_produtos,
  descricao_produtos,
  bloqueio_produtos
   )
values(
  '".$_POST['categoria_cad_produtos']."',
  '".$_POST['nome_cad_produtos']."',
  '".$_POST['referencia_cad_produtos']."',
  '".$_POST['descricao_cad_produtos']."',
  'n'
 )
	";
print "<pre>";  
print $_POST['descricao_cad_produtos'];  
print "</pre>";

A impressão do $_POST['descricao_cad_produtos'], exibe os caraters devidamente acentoados(ç,~,^).

Porem, na hora de gravar no banco, os acentos vão convertidos para caracters especiais no banco.

Mas o que me deixa mais intrigado é que, no servidor da UOL Host, o Collation de conexão do MySQL é ut8_general_ci igual ao que eu configurei localmente. Porem, na UOL Host, os os acentos NÃO vão convertidos para caracters especiais no banco. Assim, não há como eu fazer backup de um e gravar no outro (UOL Host para o meu local e vice versa)

Como corrigir isso?

Grato a quem puder ajudar!

Carlos Rocha

Print do phpmyadmin no servidor da UOL Host: http://www.guicapas.com.br/servidor.png

Print do phpmyadmin no servidor Localhost: http://www.guicapas.com.br/localhost.png

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

Aviso:

Cuidado com SQL injection. Usa prepared statements.

  • Voto 1

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Sugiro-te que leias um artigo do Joel Sposky (autor do Stack Overflow): The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)

Editado por pmg
  • Voto 1

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

nope


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
apocsantos

Boa noite,

Confirma que a collation no servidor está UTF_8_general_ci e vê qual tens no teu servidor em localhost.

Provávelmente a solução vai passar por fazer algumas coisas mais "arcaicas", para resolver o problema, nomeadamente fazer um backup tipo "SQL-Dump" no mysql em localhost, abrir o dump com notepad++, usar o "substituir" para trocar os "caracteres estranhos" pelos seus correspondentes correctos, e só depois por a base de dados no servidor.

Não vejo mal algum com o teu código PHP, mas se vires as imagens do PHP MyAdmin que tens, vês que estás a usar charsets diferentes nos dois servidores. Em localhost usas "latin1_swedish_ci" e no servidor web usas "utf8_general_ci".

Cordiais cumprimentos,

Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

assinatura.jpg

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
carcleo

Obrigado pelo retorno.

Obs.: latin(latin1) é no servidor web e utf8(InnoDB-utf8_general_ci) é em localhost

Editado por carcleo

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
apocsantos

Bom dia,

Foi confusão ao escrever, mas a lógica é a mesma. Se tiveres no database engine uma collation, deverias usar a mesma na base de dados, para não te acontecerem essas trocas "esquisitas" de caracteres, pois na maioria dos casos, a collation do servidor sobrepõe-se à da base de dados. Não é comum, mas acontece.

Cordiais cumprimentos,

Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

assinatura.jpg

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
carcleo

Descobri o erro:

Seguinte: a versão do mysql que uso (6.0) não aceita acentos de jeito nehum. Mesmo que eu codifique o banco como MyIsam e o colation latim

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.