Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con valor NULL

Estas en el tema de Problema con valor NULL en el foro de PHP en Foros del Web. Hola, estoy intentando insertar desde PHP a mysql unos datos. Uno de los datos puede contener algún valor o ser NULL, el problema es que ...
  #1 (permalink)  
Antiguo 06/11/2014, 14:14
 
Fecha de Ingreso: julio-2009
Mensajes: 40
Antigüedad: 14 años, 9 meses
Puntos: 0
Problema con valor NULL

Hola, estoy intentando insertar desde PHP a mysql unos datos. Uno de los datos puede contener algún valor o ser NULL, el problema es que no se como pasar ese NULL a la base de datos, ya que el campo siempre se me queda en blanco. Estoy haciendo algo así:

Código PHP:
if(empty($_POST['sexo'])) {
$sexoNULL;
} else {
$sexo$_POST['sexo'];
}

mysqli_query($conection"INSERT INTO alumnos (nombre, apellidos, sexo) VALUES ('$nombre', '$apellidos', '$sexo')"); 
Creo que una de las soluciones sería quitar las comillas a la variable $sexo en la consulta, pero me da error.

¿Alguien sabe como podría solucionar esto?
Un saludo y gracias.
  #2 (permalink)  
Antiguo 06/11/2014, 14:17
 
Fecha de Ingreso: octubre-2014
Ubicación: Buenos Aires
Mensajes: 278
Antigüedad: 9 años, 6 meses
Puntos: 12
Respuesta: Problema con valor NULL

Hola crispin93 tu campo en la tabla acepta NULL? para ir sacando algunas dudas..

Saludos.
__________________
http://www.sp-vision.net
  #3 (permalink)  
Antiguo 06/11/2014, 14:17
Avatar de GeekGirl  
Fecha de Ingreso: julio-2014
Mensajes: 423
Antigüedad: 9 años, 9 meses
Puntos: 44
Respuesta: Problema con valor NULL

Probá así:

Código PHP:
if(empty($_POST['sexo'])) { 
$sexofalse
} else { 
$sexo$_POST['sexo']; 

Si el campo acepta valores nulos, pasando un booleano en false no debería actualizarse.

Saludos
  #4 (permalink)  
Antiguo 06/11/2014, 14:34
 
Fecha de Ingreso: julio-2009
Mensajes: 40
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Problema con valor NULL

Cita:
Iniciado por mauritosuarez Ver Mensaje
Hola crispin93 tu campo en la tabla acepta NULL? para ir sacando algunas dudas..

Saludos.
Gracias por responder.

Sí, el campo tiene como predeterminado null y está activada la casilla nulo

Cita:
Iniciado por GeekGirl Ver Mensaje
Probá así:

Código PHP:
if(empty($_POST['sexo'])) { 
$sexofalse
} else { 
$sexo$_POST['sexo']; 

Si el campo acepta valores nulos, pasando un booleano en false no debería actualizarse.

Saludos
Gracias por responder.

Lo he hecho como me has puesto, pero me sigue quedando el campo en blanco.

Una apreciación, si pongo directamente NULL en la consulta, en vez de la variable, si que lo registra correctamente.
  #5 (permalink)  
Antiguo 06/11/2014, 14:39
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con valor NULL

Una cosa importante aquí: el valor NULL de PHP no es el mismo valor NULL de SQL.

En PHP el NULL significa nada, si lo imprimes saldrá vacío, pero la consulta espera literalmente "NULL" para que lo entienda.

Para que eso funcione PHP debe proveer dicho "NULL" como una cadena de texto.

¿Cómo?

Fácil:
Código PHP:
Ver original
  1. // MAL
  2. $foo = NULL;
  3. $sql = "UPDATE table SET column = $foo WHERE id = 99";
  4. // UPDATE table SET column = WHERE id = 99
  5.  
  6. // MAL
  7. $foo = 'NULL';
  8. $sql = "UPDATE table SET column = $foo WHERE id = 99";
  9. // UPDATE table SET column = NULL WHERE id = 99

El problema restante sería agregar comillas sólo si la variable no es NULL, usa tu ingenio.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 07/11/2014, 09:07
 
Fecha de Ingreso: julio-2009
Mensajes: 40
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Problema con valor NULL

Muchas gracias por contestar pateketrueke.

Lo he hecho como tú me has dicho, primero he hecho la INSERT y luego, si el campo sexo está vacio, le hago un UPDATE dándole NULL al campo sexo de esa fila, y ahora sí me va correctamente.

Muchas gracias ;)
  #7 (permalink)  
Antiguo 07/11/2014, 10:17
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: Problema con valor NULL

Perdón que intervenga, pero si el dato no llega o llega vacío, ni siquiera tiene sentido poner el campo en el INSERT INTO.
Código PHP:
Ver original
  1. if(empty($_POST['sexo'])) {
  2. $sql = "INSERT INTO alumnos (nombre, apellidos)
  3. VALUES ('$nombre', '$apellidos')";
  4. } else {
  5. $sql = "INSERT INTO alumnos (nombre, apellidos, sexo)
  6. VALUES ('$nombre', '$apellidos', '$sexo')";
  7. }
  8. mysqli_query($conection, $sql);

Como consejo práctico, jamás crees la query en la llamada a MySQL, no es limpio y no permite realizar buenas depuraciones de código.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 07/11/2014 a las 10:41
  #8 (permalink)  
Antiguo 08/11/2014, 07:46
 
Fecha de Ingreso: julio-2009
Mensajes: 40
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Problema con valor NULL

Muchas gracias por el consejo gnzsoloyo.

Finalmente, he cambiado y le he hecho como tú me has dicho. El problema que tenía, y que se me olvidó comentar, es que podía haber otro campo NULL (la edad por ejemplo). Al final he hecho algo así:
Código PHP:
$campos "nombre, apellidos";
$valores "'$nombre', '$apellidos'";

if(!empty(
$sexo)) {
$campos .= ", sexo";
$valores .= ", '$sexo";
}
if(!empty(
$edad)) {
$campos .= ", edad";
$valores .= ", '$edad";
}

$sql "INSERT INTO alumnos (".$campos.") VALUES (".$valores.")";

mysqli_query($conection$sql); 
No sé que tal estará el código así, de momento me funciona correctamente.
Un saludo.
  #9 (permalink)  
Antiguo 08/11/2014, 09:17
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: Problema con valor NULL

En general está bien, pero creo que te has olvidado de cerrar los apóstrofos de cada cosa:
Código PHP:
Ver original
  1. if(!empty($sexo)) {
  2. $campos .= ", sexo";
  3. $valores .= ", '$sexo'"; // Apostrofo luego de la variable
  4. }
  5. if(!empty($edad)) {
  6. $campos .= ", edad";
  7. $valores .= ", '$edad'"; // Apostrofo luego de la variable
  8. }
Hay que tener cuidado con eso porque genera errores de sintaxis de dificil detecció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)
  #10 (permalink)  
Antiguo 08/11/2014, 09:40
 
Fecha de Ingreso: julio-2009
Mensajes: 40
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Problema con valor NULL

Sí, en el original tenía las comillas puestas, las he debido quitar sin darme cuenta al ponerlo aquí.

Muchas gracias por todo ;)

Etiquetas: campo, null
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 11:18.