Foros del Web » Programando para Internet » PHP »

Envío de valor nulo a BD mediante POST.

Estas en el tema de Envío de valor nulo a BD mediante POST. en el foro de PHP en Foros del Web. Hola, estoy realizando un proyecto y he parado debido a que se me ha presentado el siguiente error: Cannot add or update a child row: ...
  #1 (permalink)  
Antiguo 23/07/2009, 12:36
 
Fecha de Ingreso: octubre-2008
Ubicación: Veracruz
Mensajes: 5
Antigüedad: 15 años, 6 meses
Puntos: 0
Envío de valor nulo a BD mediante POST.

Hola, estoy realizando un proyecto y he parado debido a que se me ha presentado el siguiente error:

Cannot add or update a child row: a foreign key constraint fails (`saradb/orders`, CONSTRAINT `insurance_id` FOREIGN KEY (`insurance_id`) REFERENCES `order_insurance_catalog` (`insurance_id`) ON UPDATE CASCADE)

Aquí la sentencia para insertar el registro:

$query = "INSERT INTO orders (`order_id`, `type_id`, `insurance_id`) VALUES ('NULL', '$add_type', '$add_insurance' )";

Aquí lo que envía el explorador:

Last executed query: INSERT INTO orders (`order_id`, `type_id`, `insurance_id`) VALUES ('NULL', '1', 'NULL' )

En la tabla hay otros campos pero escribo con los que tengo el problema en esta caso `insurance_id `. Este campo esta relacionado a una tabla para sacar el ID de la aseguradora, pero este campo puede ir vacío según el tipo de orden en `type_id`.

El problema es que a través de phpMyAdmin puedo insertar correctamente el registro pero a través de mi aplicación no. El campo `insurance_id ` esta definido como [insurance_id tinyint(2) UNSIGNED Sí NULL] y estoy enviando el valor NULL desde mi aplicación con "<option value="NULL">Selecciona una opción</option>"

Alguna idea?
  #2 (permalink)  
Antiguo 23/07/2009, 12:44
Avatar de Ronin46  
Fecha de Ingreso: junio-2009
Mensajes: 398
Antigüedad: 14 años, 9 meses
Puntos: 8
Respuesta: Envío de valor nulo a BD mediante POST.

¿Y meter el valor Null sin comillas? ¿Es posible?
  #3 (permalink)  
Antiguo 23/07/2009, 12:45
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: Envío de valor nulo a BD mediante POST.

Ese campo insurance_id no puede ir vacio
Por que debe de hacer referencia con otro campo de la tabla order_insurance_catalog
a eso se refiere el error.
  #4 (permalink)  
Antiguo 23/07/2009, 14:21
 
Fecha de Ingreso: octubre-2008
Ubicación: Veracruz
Mensajes: 5
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Envío de valor nulo a BD mediante POST.

Hola gjx2, yo también entendí eso pero mi duda es porque puedo hacer el registro en la tabla 'orders' mediante phpMyAdmin y desde mi archivo .php no. Cuando phpMyAdmin inserta el registro le pone 'NULL' a este campo sin problemas aun relacionado con la otra tabla.

Alguna idea?
  #5 (permalink)  
Antiguo 23/07/2009, 14:22
 
Fecha de Ingreso: octubre-2008
Ubicación: Veracruz
Mensajes: 5
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Envío de valor nulo a BD mediante POST.

Tendrá que ver que estoy usando MDB2 de Pear?
  #6 (permalink)  
Antiguo 24/07/2009, 10:15
 
Fecha de Ingreso: octubre-2008
Ubicación: Veracruz
Mensajes: 5
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Envío de valor nulo a BD mediante POST.

Hola, bueno ya pude resolver el problema, efectivamente gjx2 se puede insertar un registro en un campo nulo aun cuando esta relacionado con otra tabla, la solución fue la siguiente:

Anteriormente la opción del select estaba así:

<option value="NULL">Selecciona una opción</option>

Ahora así:

<option value=NULL>Selecciona una opción</option>

La sentencia para insertar el registro estaba así:

$query = "INSERT INTO orders (`order_id`, `type_id`, `insurance_id`) VALUES ('NULL', '$add_type', '$add_insurance' )";

Ahora así:

$query = "INSERT INTO orders (`order_id`, `type_id`, `insurance_id`) VALUES ('NULL', '$add_type', $add_insurance )";

Espero que esto le pueda servir a otra persona con el mismo problema.

Gracias a todos.
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 03:20.