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

duda sobre INSERT INTO

Estas en el tema de duda sobre INSERT INTO en el foro de Mysql en Foros del Web. Tengo esto: mysql_query("INSERT INTO comentarios VALUES ('','$id_noticia','$id_nick','$nombre','$comentari o')"); Cuando uso esta sintaxis, que no dice nada de en que columnas hay que insertar los datos, ...
  #1 (permalink)  
Antiguo 09/11/2009, 19:22
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
duda sobre INSERT INTO

Tengo esto:

mysql_query("INSERT INTO comentarios VALUES ('','$id_noticia','$id_nick','$nombre','$comentari o')");

Cuando uso esta sintaxis, que no dice nada de en que columnas hay que insertar los datos, entiendo que se van llenando las casillas por turno. Pero que pasa si no coinciden las casillas con el numero de datos que paso en el parentesis?

Como estoy en pleno desarrollo necesito saber si al agregar nuevas columnas al final de mi tabla este tipo de sentencias colapsarà y tendre que corregirlas agregando un espacio vacio ' ' en el parentesis.

Yo estoy haciendo mis pruebas pero mientras tanto tengo algun bug que no encuentro y me entretiene.
  #2 (permalink)  
Antiguo 09/11/2009, 19:54
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: duda sobre INSERT INTO

El uso de INSERT es simple:
1) Si no se indican qué campos se cargarán en la inserción, se deben poner valores para todos los campos que existan en la tabla, en el mismo orden y tipo en que aparecen en su creación. En este caso no pueden faltar valores respecto de los creados.
2) Si se indican campos a ingresar se deben ingresar sólo valores para las columnas declaradas, en el mismo orden y del mismo tipo. En este caso la cantidad de columnas declaradas y la cantidad de valores enviados deben ser iguales.
2.1) Si se desean indicar columnas a ingresar, no es necesario respetar el orden de creación en la declaración, pero si en los valores respecto de lo declarado.
2.2) En caso de declarar columnas a ingresar, se deben incluir todas las columnas declaradas como NOT NULL en la creación de la tabla. Esto es mandatorio, o de lo contrario generará un error de inserción.
__________________
¿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 09/11/2009, 20:34
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: duda sobre INSERT INTO

Gracias. Con los dos primeros puntos me aclaraste una duda incomoda.

el 2.1 y el 2.2 me generan dificultad. Te referis a esto?:

mysql_query("INSERT INTO publicaciones (id,ruta,id_foto,titulo,descripcion) VALUES ('','$raiz','$nombre','','')");

Tengo los valores 4 y 5 con nada. Eso tiene que estar previsto en la tabla , con un NOT NULL?
  #4 (permalink)  
Antiguo 09/11/2009, 20:44
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: duda sobre INSERT INTO

Código sql:
Ver original
  1. INSERT INTO publicaciones (id, ruta, id_foto, titulo, descripcion)
  2. VALUES ('', '$raiz', '$nombre', '', '');
En realidad, algo así...
Me explico: En este ejemplo no está poniendo nulos, estás poniendo caracteres vacíos, que en SQL no son la misma cosa. Si la tabla tiene definidos esos campos como NOT NULL, esta sentencia no va a generar un error, porque '' no es NULL.
El error saltaría si, siendo NOT NULL los dos últimos campos, tu pusieses algo así:
Código sql:
Ver original
  1. INSERT INTO publicaciones (id, ruta, id_foto)
  2. VALUES ('', '$raiz', '$nombre');
En este ejemplo, los campos están definidos de origen como NOT NULL... pero no los estás ingresando, con lo que el nuevo registro intentará poner NULL en esos dos campos... y saltará el error.
Si no te importa que esos campos se carguen con NULL, entonces en el momento de crear la tabla, en lugar de NOT NULL debe ir NULL.

Cuidado: Cuando quieras buscar si un campo contiene NULL como valor, no se puede hacer: campo=''. Eso no te responderá TRUE, porque '' es caracter vacío...
__________________
¿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 09/11/2009, 21:03
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: duda sobre INSERT INTO

Esta mas que claro. Gracias mil por tomarte tu tiempo.
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 10:45.