Error de MySQL al agregar caracteres especiales, especialmente en el signo, incluso con el método mysql_real_escape_string ()

Estoy tratando de hacer un sistema de usuario con una base de datos mysql. Intenté insertar una fila en una tabla con el siguiente código php:

$UserCreateQueryText = "INSERT INTO  users (
Username, Password, FirstName, LastName, eMail, ID, ClearanceLevel)
VALUES (
" . $User . ", " . $Password . ", " . $FirstName . ", " . $LastName . ", " . $eMailToUse . ", NULL, 1)";

$UserCreateQuery = mysql_query($UserCreateQueryText) or die(" User creation query error: " . mysql_error());

Las variables que utilicé se definen de la siguiente manera:

$User = mysql_real_escape_string($_GET["Username"]);
$Password = mysql_real_escape_string($_GET["Password"]);
$FirstName = mysql_real_escape_string($_GET["FirstName"]);
$LastName = mysql_real_escape_string($_GET["LastName"]);
$eMail = mysql_real_escape_string($_GET["eMail"]);

Usé $ _GET para poder ver que las variables se pasaban correctamente.

Entonces, si inserté un correo electrónico (ejemplo@dominio.com), el resultado de $ UserCreateQueryText sería:

INSERT INTO  users (
Username, Password, FirstName, LastName, eMail, ID, ClearanceLevel)
VALUES (
username, password, Name, LastName, , NULL, 1)

por lo que se borra el campo de correo electrónico y se devuelve un error:

User creation query error: You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax to use near
' NULL, 1)' at line 4

-Ric Del (foxtailgames.com.mx)

preguntado el 30 de agosto de 11 a las 22:08

Ese es un problema con su consulta. Intente repetirlo en su lugar, ejecútelo en phpmyadmin y vea qué surge para tratar de resolverlo. La consulta no está formada correctamente. -

1 Respuestas

Necesita citar valores de cadena:

INSERT INTO ... VALUES ('String', 'string', ...)

Actualmente no eres:

INSERT INTO ... VALUES(Foo, Bar@baz.com, ...)

Eso da el error de sintaxis.

Respondido 31 ago 11, 03:08

echo su consulta final con los valores insertados y publíquela aquí. - deceze

Lo hice: INSERT INTO users (nombre de usuario, contraseña, nombre, apellido, correo electrónico, ID, nivel de autorización) VALORES (nombre de usuario, contraseña, nombre, apellido,, NULL, 1) (el correo electrónico permanece vacío) - rdelfin

Bueno, ahí está tu problema, tienes esa coma vacía. - Ciclón

@ricky Yup, y el , , está provocando un error de sintaxis, porque no pusiste comillas alrededor de tus valores. Incluso si la sintaxis fuera correcta, obtendría otro error porque los valores no están entre comillas. Además, está llamando a su variable de correo electrónico $eMailToUse aquí y $eMail allí, por lo que permanece vacío. ¡Active el informe de errores para detectar errores tipográficos! - deceze

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.