Jump to content
carcleo

[Resolvido] Não consigo gravar

Recommended Posts

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

Share this post


Link to post
Share on other sites
brunoais

Aviso:

Cuidado com SQL injection. Usa prepared statements.

  • Vote 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%.

Share this post


Link to post
Share on other sites
carcleo

Sim. Mas esse problema não tem a ver com sql injection. Mas valeu a lembrança.

Tem alguma ideia do que pode ser?

Share this post


Link to post
Share on other 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!)

Edited by pmg
  • Vote 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!

Share this post


Link to post
Share on other 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%.

Share this post


Link to post
Share on other 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"

Share this post


Link to post
Share on other sites
carcleo

Obrigado pelo retorno.

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

Edited by carcleo

Share this post


Link to post
Share on other 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"

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.