Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Error en insercion de datos

Estas en el tema de Error en insercion de datos en el foro de Mysql en Foros del Web. Hola amigos, les cuento que llevo mucho tiempo buscando como solucionar este problema y por mi inexperiencia no he podido. Estoy generando una inserción a ...
  #1 (permalink)  
Antiguo 24/10/2010, 21:18
 
Fecha de Ingreso: abril-2010
Mensajes: 10
Antigüedad: 14 años
Puntos: 0
Error en insercion de datos

Hola amigos, les cuento que llevo mucho tiempo buscando como solucionar este problema y por mi inexperiencia no he podido. Estoy generando una inserción a la base de datos mysql dinamicamente es decir con variables php, pero tengo unos campos que llevan texto y no se como hacer para que la variable me salga entre comillas, como es el caso de $vendedor por tal motivo falla la insercion, y este es el error que obtengo

La consulta falló: INSERT INTO tbloc (tblservicio_idservicio,tblproveedor_idproveedor, fecha, cantidad, vunitario, vtotal, vendedor, descripcion,solicito,iva,ivavalor) VALUES (8,insumos varios,2010-10-24,1,100000,116000,eusebio,templado lamina ,70906789,0.16,16000)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 'varios,2010-10-24,1,100000,116000,eusebio,templado lamina ,70906789,0.16,16000)' at line 1
les agradezco una ayudita al respecto.

ya realicé la prueba en sqlyog y funciona cuando pongo entre comillas el resultado de las variables que contienen texto. pero no se como hacerlo en la sentencia.

mil gracias!



Código PHP:
$sql ="INSERT INTO tbloc (".$campo.",tblproveedor_idproveedor, fecha, cantidad, vunitario, vtotal, vendedor, descripcion,solicito,iva,ivavalor) VALUES (".$idmaterial.","$idproveedor.","$fcreacion.","$cantidad.",".$vunidad.",".$vtotal.",".$vendedor.",".$descripcion.",".$solicito.",".$iva.",".$ivavalor.")";
          
$consulta=mysql_query($sql,$mym )or die('La consulta falló: '.$sql mysql_error());
          
$objetomysql_fetch_array($consulta); 

Última edición por karlosramirez; 25/10/2010 a las 03:26
  #2 (permalink)  
Antiguo 25/10/2010, 05:33
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Error en insercion de datos

Las cadenas de texto deben quedar, en la sentencia sql, encerradas entre apóstrofes ('), de modo que cuando programes en PHP, los bloques de las variables deben quedar:
Cita:
'".$variable"'
O sea:
Código PHP:
Ver original
  1. $sql ="INSERT INTO tbloc (".$campo.", tblproveedor_idproveedor, fecha, cantidad, vunitario, vtotal, vendedor, descripcion, solicito, iva, ivavalor)";
  2. $sql .="VALUES (".$idmaterial.", ". $idproveedor.", '". $fcreacion."', ". $cantidad.", ".$vunidad.", ".$vtotal.", '".$vendedor."', '".$descripcion."', '".$solicito."', ".$iva.", ".$ivavalor.")";

Lo esencial aquí es no confundir los apóstrofes (') con los acentos inversos(`). Los segundos se usan en los nombres de campos, tablas y bases, pero no en las cadenas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 26/10/2010, 06:04
 
Fecha de Ingreso: abril-2010
Mensajes: 10
Antigüedad: 14 años
Puntos: 0
Respuesta: Error en insercion de datos

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Las cadenas de texto deben quedar, en la sentencia sql, encerradas entre apóstrofes ('), de modo que cuando programes en PHP, los bloques de las variables deben quedar:

O sea:
Código PHP:
Ver original
  1. $sql ="INSERT INTO tbloc (".$campo.", tblproveedor_idproveedor, fecha, cantidad, vunitario, vtotal, vendedor, descripcion, solicito, iva, ivavalor)";
  2. $sql .="VALUES (".$idmaterial.", ". $idproveedor.", '". $fcreacion."', ". $cantidad.", ".$vunidad.", ".$vtotal.", '".$vendedor."', '".$descripcion."', '".$solicito."', ".$iva.", ".$ivavalor.")";

Lo esencial aquí es no confundir los apóstrofes (') con los acentos inversos(`). Los segundos se usan en los nombres de campos, tablas y bases, pero no en las cadenas.
hola gnzsoloyo no sabes cuanto agradezco tu respuesta, intente hacerlo de la manera que tu aconsejas pero obtengo el siguiente error

La consulta falló: INSERT INTO tbloc (tblmaterial_idmaterial, tblproveedor_idproveedor, fecha, cantidad, vunitario, vtotal, vendedor, descripcion, solicito, iva, ivavalor)VALUES (19, insumos varios, '2010-10-25', 3, 15000, 52200, 'pedro goez', 'varil', '70906789', 0.16, 7200)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 'varios, '2010-10-25', 3, 15000, 52200, 'pedro goez', 'varil', '70906789', 0.16, ' at line 1

realizo pruebas con sqlyog y encerrando el texto entre comillas dobles("pedro goez") me resulta pero no se como hacerlo.

de nuevo mil gracias por la ayuda que puedas brindarme.

feliz día!!
  #4 (permalink)  
Antiguo 26/10/2010, 08:48
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Error en insercion de datos

Lo primero que tienes que hacer cuando MySQL te devuelve un mensaje de error de sintaxis es recuperar la sentencia tal y como entró en MySQL, con los valores reales que entraron y analizar su sintaxis. de esa forma puedes detectar qué valores no están ingresando correctamente. Esto es preferible hacerlo poniendo la sentencia de forma estructurada, de modo tal de poder ver cada valor independientemente del resto:
Código MySQL:
Ver original
  1. INSERT INTO tbloc
  2.   (tblmaterial_idmaterial,
  3.   tblproveedor_idproveedor,
  4.   fecha,
  5.   cantidad,
  6.   vunitario,
  7.   vtotal,
  8.   vendedor,
  9.   descripcion,
  10.   solicito,
  11.   iva,
  12.   ivavalor)
  13.   19,
  14.   insumos varios,
  15.   '2010-10-25',
  16.   3,
  17.   15000,
  18.   52200,
  19.   'pedro goez',
  20.   'varil',
  21.   '70906789',
  22.   0.16,
  23.   7200)
Si lo hubieses hecho habrías notado que el segundo valor (insumos varios) es una cadena de texto, la cual no estás encerrando entre los apóstrofes correspondientes.
Ahora bien, siendo que ese valor debería corresponder al campo tblproveedor_idproveedor, este debería ser un valor numérico, y no es el caso, salvo que tu hayas definido como VARCHAR los ID de los proveedores, cosa que me parece poco probable.

En cualquier caso, ese es el error.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 27/10/2010, 07:43
 
Fecha de Ingreso: abril-2010
Mensajes: 10
Antigüedad: 14 años
Puntos: 0
Respuesta: Error en insercion de datos

gnzsoloyo mil gracias por tu apoyo, con tu ayuda quedó resuelto

feliz día!!

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:24.