MySQL - caracteres cuadrados divertidos añadido al valor al insertarlo en la tabla
Pregunta
Tengo un script php que se inserta en los valores de tabla de MySQL
INSERT INTO stories (title) VALUES('$_REQUEST[title]);
he comprobado los valores de mis variables de petición antes de entrar en la mesa y que está bien.
Pero cuando agrego title = John a la mesa por ejemplo,
me sale algo como esto:
title = "[][][][]john"
y cuando extraer el valor, que es un salto de línea entonces john.
Tengo mis columnas a UTF-8, probé conjunto de caracteres sueco también.
Nota: No me sale este error al introducir los valores de la línea de comandos phpMyAdmin
Solución
Se necesitan {}
en torno a cualquier notación de matriz cuando se utiliza dentro de ""
.
$q="INSERT INTO stories(title) VALUES('{$_REQUEST['title']}')";
Por cierto, sería mejor, al comprobar su _REQUEST $ vars para almacenar las versiones desinfectados en nuevas variables, y para estar seguro de escapar de ellos con real_escape_string()
Otros consejos
SET NAMES <encoding>
consulta debe ejecutarse cada vez que se conecta a la base de datos.
regla muy simple.
donde <encoding>
es su página de codificación HTML en dialecto MySQL (utf8
para el UTF-8)
Es necesario comprobar el juego de caracteres de la base de datos, el servidor y el cliente.
Tenga en cuenta que no es un juego de caracteres sueco, que es una colación sueco.