Foros del Web » Programando para Internet » PHP »

Asignar NULL a un registro MySQL

Estas en el tema de Asignar NULL a un registro MySQL en el foro de PHP en Foros del Web. Buenas, les cuento mi duda: obtengo una variable por POST que puede estar cargada o vacía (""), yo quiero en caso que la variable sea ...
  #1 (permalink)  
Antiguo 23/09/2012, 16:52
 
Fecha de Ingreso: junio-2011
Mensajes: 478
Antigüedad: 12 años, 11 meses
Puntos: 13
Pregunta Asignar NULL a un registro MySQL

Buenas, les cuento mi duda:
obtengo una variable por POST que puede estar cargada o vacía (""), yo quiero en caso que la variable sea "" guardar en la base de datos NULL en lugar de 0 (ya que ese registro es un int), aclaro que la BD acepta ese registro como nulo.

Creo que uno de los problemas son las comillas, cito mi php:
(Resumen de código)

Código PHP:
if($_POST['variable'] != "")
{
   
$variable $_POST['variable'];
   
$variable "'".$variable."'";
}

$sql INSERT INTO tabla (variableVALUES ($variable); 
En caso que la variable sea distinta de "" la sql se ejecuta correctamente, el tema es cuando es igual a "". Probé hacer un else y cargarla NULL pero me da error.

Gracias.
  #2 (permalink)  
Antiguo 23/09/2012, 17:02
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: Asignar NULL a un registro MySQL

A ver yoruga, para que $sql se ejecute si la varaible es diferente de "" entonces primero que nada pone $sql dentro del if ese, lo que tenes que hacer ahora es otro if pero con la condición de que si es == ( identico ) a "" que se ejecute lo que se te cante.
Si queres ingresar un dato como NULL, en la sentencia sql pones la palabra NULL y fue, en la parte de los valores ( values )
  #3 (permalink)  
Antiguo 23/09/2012, 17:17
 
Fecha de Ingreso: junio-2011
Mensajes: 478
Antigüedad: 12 años, 11 meses
Puntos: 13
Respuesta: Asignar NULL a un registro MySQL

Todo bien compatriota?
Entiendo lo que me dices e inclusive lo probé para ver que funcionara pero no es lo que quiero, el código que puse es un resumen, en mi problema real mi sql tiene varias variables con esa posibilidad de NULL, por lo que necesito asignar los valores a través de variables. Se te ocurre algo?
Gracias!
  #4 (permalink)  
Antiguo 23/09/2012, 17:23
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: Asignar NULL a un registro MySQL

todo bien
Código PHP:
Ver original
  1. if($_POST['variable'] != NULL)
  2. {
  3.    $variable = $_POST['variable'];
  4.    $variable = "'".$variable."'";
  5. }
  6.  
  7. if($_POST['variable'] == NULL)
  8. {
  9.   //sentencias a ejecutar...
  10. }
  11.  
  12. $sql = INSERT INTO tabla (variable) VALUES ($variable);

algo así probaste?
¿Y cual es ese error que decis que tenes?
  #5 (permalink)  
Antiguo 23/09/2012, 17:32
 
Fecha de Ingreso: junio-2011
Mensajes: 478
Antigüedad: 12 años, 11 meses
Puntos: 13
Respuesta: Asignar NULL a un registro MySQL

Gracias pero no es eso.
Te explico un poco más:
Siempre se obtienen todas las variables POST del formulario no importa si estan cargadas o no.
En caso que una variable venga "" (en ese input en el form no se ingresó nada) debo cargar en el registro correspondiente NULL, sin embargo las veces que me ha cargado algo lo ha hecho con 0 y no me sirve (en la BD esos registros son int y permiten NULL).
Todo se debe hacer en una única consulta, por eso el tema de las variables.
No me queda claro cómo insertar en un registro el valor NULL de una variable, si lo hago directamente funciona, pero si lo hago a través de una variable no. Y cuando probé directamente vi que el NULL debe ser sin comillas, por eso en el if le agregaba las comillas al parámetro.

El error es que la sql no se ejecuta.

Etiquetas: mysql, null, registro, sql, tabla, variables
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 14:57.