mysql - caracteres quadrados engraçados adicionados ao valor ao inseri-lo na tabela
Pergunta
Tenho um script php que insere valores na tabela mySQL
INSERT INTO stories (title) VALUES('$_REQUEST[title]);
Verifiquei os valores das minhas variáveis de solicitação antes de entrar na tabela e está tudo bem.
Mas quando adiciono title=john à tabela, por exemplo,
Eu recebo algo assim:title = "[][][][]john"
e quando eu extraio o valor, é uma nova linha então john.
Tenho minhas colunas definidas como utf-8, tentei também o conjunto de caracteres suecos.
Observação:Não recebo este erro ao inserir valores da linha de comando do phpMyAdmin
Solução
Você precisa {}
em torno de qualquer notação de array quando usado dentro ""
.
$q="INSERT INTO stories(title) VALUES('{$_REQUEST['title']}')";
Aliás, seria melhor, ao verificar seus vars $_REQUEST, armazenar as versões higienizadas em novas variáveis e ter certeza de escapá-las com real_escape_string()
Outras dicas
SET NAMES <encoding>
A consulta deve ser executada sempre que você se conectar ao seu banco de dados.
regra muito simples.
onde <encoding>
é a codificação da sua página HTML no dialeto mysql (utf8
para o utf-8)
Você precisa verificar o conjunto de caracteres do banco de dados, do servidor e do cliente.
Observe que não é um conjunto de caracteres sueco, é um agrupamento sueco.