MySQL - Error Insert desde php

 
Vista:
sin imagen de perfil

Error Insert desde php

Publicado por Xavi (3 intervenciones) el 23/04/2017 12:48:16
Buenos dias,
tengo un problema al momento de intentar insertar un registro en una tabla de la base de datos.
La tabla es de ACYMAILING e estoy intentando añadir un registro.

la sentencia que ejecuto en php es la siguiente:

$sql = "INSERT INTO masv_acymailing_subscriber ( subid, email, userid, name, created, confirmed, enabled, accept, ip, html, key, confirmed_date, confirmed_ip, lastopen_date, lastclick_date, lastopen_ip, lastsent_date, idioma, poblaci, provincia, direccio VALUES (NULL, '[email protected]', 0, 'Xavi', 0, 0, 1, 1, 'ipvarchar', 1, NULL, 0, 'varcharconfirm', 0, 0, NULL, 0, 'cat', 'tar', 'gar', 'bar')";

el error que me muestra es el siguiente:

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 'key, confirmed_date, confirmed_ip, lastopen_date, lastclick_date, lastopen_ip, l' at line 1

he realizado esta consulta en acces con el ODBC connector mysql y me funciona correctamente pero en el momento de hacer la consulta por PHP me devuelbe este error.

esta es la estructura bbdd


por favor llevo todo el fin de semana y empiezo tener ganas de romper algo.
gracias por vuestra ayuda
Xavi
estructbbdd
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Error Insert desde php

Publicado por IVAN HEREDIA PLANAS (2 intervenciones) el 23/04/2017 18:21:08
hola tienes que poner esta sintaxis.
$1variable = $_POST['nombre del input'];
$2variable = $_POST['nombre del input'];
...
$sql="INSERT INTO ( columna1,columna2...) VALUES ($1variable, $2variable...) "

Espero haberte ayudado

Para hacer un formulario que envie los datos en la DB
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Error Insert desde php

Publicado por Xavi (3 intervenciones) el 23/04/2017 20:06:30
Buenas IVAN, he provado de establecer como me indicas las 20 variables de la sentencia, y lo he realizado como me indicas pero me sigue dando el mismo error :(

$sql = "INSERT INTO masv_acymailing_subscriber (email, userid, name, created, confirmed, enabled, accept, ip, html, key, confirmed_date, confirmed_ip, lastopen_date, lastclick_date, lastopen_ip, lastsent_date, idioma, poblaci, provincia, direccio) VALUES ($var1, $var2, $var3,$var4,$var5,$var6,$var7,$var8,$var9,$var10,$var11,$var12,$var13,$var14,$var15,$var17,$var18,$var19,$var20,$var21)";
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 953
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Error Insert desde php

Publicado por leonardo_josue (414 intervenciones) el 24/04/2017 16:44:21
Hola Xavi:

En la primer sentencia tienes un error de sintaxis, NO ESTÁS CERRANDO EL PARÉNTESIS DE LA SELECCIÓN DE CAMPOS:

1
... direccio VALUES (NULL, ...

debería ser así:

1
... direccio) VALUES (NULL ...

En segundo lugar, tienes varios campos con nombres de palabras reservadas (de entrada sé que KEY y NAME lo son, habría que revisar la tabla completa)

https://dev.mysql.com/doc/refman/5.7/en/keywords.html

por lo tanto NO PUEDES PONER LA SENTENCIA TAL COMO LA TIENES. aquí tienes varias opciones:

1. Renombrar tus campos. Es una MEJOR PRÁCTICA, NO UTILIZAR NOMBRES DE CAMPOS EN INGLÉS, ya que como podrás observar todas las palabras reservadas están en este idioma... de tal suerte que en lugar de NAME pones NOMBRE o en lugar de KEY pones LLAVE... Otra alternativa sería agregar un prefijo o un sufijo al nombre del campo para no tener este error. (CAMPO_NAME, CAMPO_KEY, NAME_ALGO, KEY_LO_QUE_SEA)

2. MySQL permite utilizar este tipo de nombres en campos, siempre y cuando se pongan entre acentos grave (`), para más información consulta las reglas para identificadores válidos de objetos.

https://dev.mysql.com/doc/refman/5.7/en/identifiers.html

de tal suerte, que tu consulta debería quedar así:

1
2
3
INSERT INTO `masv_acymailing_subscriber`
 ( `subid`, `email`, `userid`, `name`, `created`, `confirmed`, `enabled`, `accept`, `ip`, `html`, `key`, `confirmed_date`, `confirmed_ip`, `lastopen_date`, `lastclick_date`, `lastopen_ip`, `lastsent_date`, `idioma`, `poblaci`, `provincia`, `direccio`)
VALUES (NULL, 'soktrem@gmail.com', 0, 'Xavi', 0, 0, 1, 1, 'ipvarchar', 1, NULL, 0, 'varcharconfirm', 0, 0, NULL, 0, 'cat', 'tar', 'gar', 'bar');

haz la prueba y nos comentas.

Saludos
Leo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil

Error Insert desde php

Publicado por Xavi (3 intervenciones) el 24/04/2017 19:45:46
Buenas Tardes Leo,
Primero que todo agradecerte tu tiempo y dedicación.
he revisado tal y como me indicas en tu respuesta, y después de probar la sentencia con tu código entre acentos grave, me ha funcionado perfectamente.
Muchas gracias por tu ayuda Leo.
Un Saludo!
Xavi

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar