Problema para la inserción de registros en Mysql

Desde colombia para preguntarle lo siguiente resulta que en una página web que hice en Dreamweaver CS5.5 utilizando php deseo insertar registros a una base de datos que tengo en Mysql,, en la página web tengo 4 campos de texto y 2 checkboxs al insertar la información a la base de datos me aparece el siguiente error:
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 '?n(Nombre_B, Apellido_B, Email_B, Pais_Ciudad_B, Si, No, Mensaje) values ('aaaaaaaa',' at line 1
y el código que tengo en Php es el siguiente:
<?php
function Conectarse(){
# Esta funcion es la q me conecta a la DB solo modifica tu usuario y la contraseña
# Por estetica ps no la debes colocar en tooodos los archivos que tengas que hacer
# una conecciona la DB, simplemente crea un archivo llamado qué se yo.. "Conex.php"
# y colocas esta funcion y... Cuando necesites una coneccion a tu DB simplemente
# haces esto: "include('Conex.php');" y despues llamas la funcion "$link = Conectarse();"
# y listo!!
if (!($link=mysql_connect("localhost","root","califele2011"))){
echo "Error conectando a la base de datos. Por favor comunique con el administrador ";
exit();
}
if (!mysql_select_db("Omnilife",$link)){
echo "Error seleccionando la base de datos. Por favor comunique con el administrador";
exit();
}
return $link;
}
$link = Conectarse(); # con esto me conecto a la DB
ini_set("date.timezone", "America/Bogota"); # esto no veo que lo estes usando. Para mi, esto sobra.
$Nombre5 = $_POST['Nombre5'];
$Apellido5 = $_POST['Apellido5'];
$Email5 = $_POST['Email5'];
$País_Ciudad5 = $_POST['PaísCiudad5'];
$Si5 = $_POST['Si5'];
$No5 = $_POST['No5'];
$Mensaje5 = $_POST['Mensaje5'];
# El error que veia era que despues de INTO.. Tu tabla la estabas colocando entre comillas '' y eso no se debe hacer.
if (mysql_query("INSERT INTO buzón(Nombre_B,Apellido_B,Email_B,Pais_Ciudad_B,Si,No,Mensaje) values ('$Nombre5','$Apellido5','$Email5', '$País_Ciudad5','$Si5','$No5','$Mensaje5')")){
echo "Registro agregado con exito!";
} else {
echo "Error: ".mysql_error();
}
mysql_close($link);# Con esto cierro la conexion a la DB
?>

1 respuesta

Respuesta
1
Tienes que escapar las variables, es decir limpiarla de posibles caracteres inválidos para insertar en la BBDD.
Yo te recomendaría que para la abstracción de datos usaras alguna clase ya existente de PHP. Por ejemplo: http://www.phpclasses.org/package/5903-PHP-Run-MySQL-database-queries-from-parameter-lists.html
Hola, Muchas gracias por responder, Pues egun lo que he visto eso se realiza con el operador de variables llamado Unset, la sintaxis que veo es la siguiente: unset ($_POST[name]); yo limpio las variables en cualquier parte del código después de definirlas y no me hace nada, me sigue enviando el incomodo mensaje que le decía ayer en la página web... aquí te envío el código para que sepas que es lo que estoy haciendo:
<?php
function Conectarse(){
if (!($link=mysql_connect("localhost","root","califele2011"))){
echo "Error conectando a la base de datos. Por favor comunique con el administrador ";
exit();
}
if (!mysql_select_db("Omnilife",$link)){
echo "Error seleccionando la base de datos. Por favor comunique con el administrador";
exit();
}
return $link;
}
$link = Conectarse(); # con esto me conecto a la DB
ini_set("date.timezone", "America/Bogota"); # esto no veo que lo estes usando. Para mi, esto sobra.
$Nombre5 = $_POST['Nombre5'];
$Apellido5 = $_POST['Apellido5'];
$Email5 = $_POST['Email5'];
$País_Ciudad5 = $_POST['PaísCiudad5'];
$Si5 = $_POST['Si5'];
$No5 = $_POST['No5'];
$Mensaje5 = $_POST['Mensaje5'];
unset($_POST['Nombre5']);
unset($_POST['Apellido5']);
unset($_POST['Email5']);
unset($_POST['PaísCiudad5']);
unset($_POST['Si5']);
unset($_POST['No5']);
unset($_POST['Mensaje5']);
if (mysql_query("INSERT INTO buzón(Nombre_B,Apellido_B,Email_B,Pais_Ciudad_B,Si,No,Mensaje) values ('$Nombre5','$Apellido5','$Email5', '$País_Ciudad5','$Si5','$No5','$Mensaje5')")){
echo "Registro agregado con exito!";
} else {
echo "Error: ".mysql_error();
}
mysql_close($link);
?>
Gracias de nuevo.
Unset es para vaciar. Lo que has de hacer es limpiar todas las variables:
function clean($var){//request string cleaner if(get_magic_quotes_gpc()) $var=stripslashes($var); //clean $var=mysql_real_escape_string($var); //clean return strip_tags($var, '<b><a>');//returning clean var }
Usalo delante de las variables que recojas.
También verifica que tengas la SQL bien formada.
Hola experto,,,. ¿Pues hice lo que me dijiste pero no me funciona puse las funciones delante de cada variable que voy a coger y me muestra el mismos error a que se deberá eso?
Gracias!.
Ademas pues si el compilador me dice que tengo problemas en la sintaxis SQL debe de ser por que hay problemas ahí, la sintaxis que tengo es la siguiente:
if (mysql_query("INSERT INTO buzón (Nombre_B, Apellido_B, Email_B, Pais_Ciudad_B, Si, No, Mensaje) values ('$Nombre5', '$Apellido5', '$Email5' , '$País_Ciudad5' , '$Si5' ,'$No5' , '$Mensaje5' )")){
echo "Registro agregado con exito!";
} else {
echo "Error: ".mysql_error();
}
mysql_close($link);# Con esto cierro la conexion a la DB
Gracias..
No pero es que lo de la sintaxis debes de probarlo antes en la consola de MYSQL, yo no sé que formato tienen esos campos, si son numéricos o char o varchar...
La función se usa:
$variable = clean($_POST['loquesea']);

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas