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

Hacer INSERT con valores nulos.

Estas en el tema de Hacer INSERT con valores nulos. en el foro de Mysql en Foros del Web. Hola a todos Veamos, tengo la siguiente duda. Supongamos que tengo la tabla Usuario con los siguientes campos: NOMBRE RUT DIRECCION digamos que desde PHP ...
  #1 (permalink)  
Antiguo 27/05/2010, 10:26
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 22 años, 4 meses
Puntos: 10
Hacer INSERT con valores nulos.

Hola a todos

Veamos, tengo la siguiente duda.

Supongamos que tengo la tabla Usuario con los siguientes campos:

NOMBRE

RUT

DIRECCION

digamos que desde PHP quiero hacer un INSERT a esta tabla, y para ellos tengo una clase que Usuario con sus respectivas variables para contener la información de la tabla Usuario.

Ahora bien, si hago esto.

Código PHP:
$sql 'INSERT INTO USUARIO (NOMBRE, RUT, DIRECCION) VALUES ('.$usuario->getNombre().', '.$usuario->getRut().', '.$usuario->getDireccion().')'
Que pasaria en el caso de que el método getDireccion() devolviese un valor nulo, es decir:
Código PHP:
($usuario->getDireccion() == null) echo 'true'
Mi duda es si el campo en la base de datos efectivamente quedara NULL o quedara un String con la palabra "null"

Espero alguien pueda ayudarme, lo que necesito hacer es que quede el valor NULL en base de datos y no el String "null" y quiero ver si para esto puedo evitarme un eterno if para cada campo que quiero insertar.

Saludos
__________________
se despide hasta la proxima
Gonzalo Castillo
  #2 (permalink)  
Antiguo 27/05/2010, 10:34
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Hacer INSERT con valores nulos.

Lo puedes comprobar tu mismo.

haz una inserción del null desde php. despues que inserte, vas a la base de datos y lo compruebas con esto:

Código SQL:
Ver original
  1. SELECT *FROM tabla WHERE direccion IS NULL;

Si aparece el registro, efectivamente ha guardado un null en el campo. Si no aparece, es porque ha guardado la palabra NULL y ya tendrías que mirar como lo solucionas desde php.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 27/05/2010, 10:44
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 22 años, 4 meses
Puntos: 10
Respuesta: Hacer INSERT con valores nulos.

Claro, el problema es que en mi trabajo no tengo como instalar Apache ni menos MySQL para hacer estas pruebas, estoy programando un sistema chico un poco a siegas, luego pruebo en mi casa en la noche, pero esto es algo trascendente en este momento, ya que si lo hago mal en una clase lo haré mal en todos mis DAOS, por eso quiero minimizar la cantidad de errores.

Si alguien sabe esto y puede comentarme su experiencia lo agradecería mucho.
__________________
se despide hasta la proxima
Gonzalo Castillo
  #4 (permalink)  
Antiguo 28/05/2010, 08:00
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 22 años, 4 meses
Puntos: 10
Respuesta: Hacer INSERT con valores nulos.

Bueno, ya que nadie pudo responder hare yo mismo el aporte.

Efectivamente los valores que en el objeto vienen null pasan a la base de datos solo como un String vacío, no quedando realmente NULL en ella.

La solución que me hice para evitar este desagradable problema es la siguiente clase con un método estático utilitario:
Código PHP:
<?php
class Util {
    public static function 
convert2Sql($campo) {
        if(
null == $campo) {
            
$campo 'NULL';
        } else {
            
$campo '\''.$campo.'\'';
        }
        
        return 
$campo;
    }
}
?>
De esta forma en mi DAO puedo tener el metodo save de la siguiente forma:
Código PHP:
public function save(Ecg $ecg) {
        if(
null == $ecg) {
            throw new 
Exception('Objecto Ecg viene nulo'2001);
        }
        
        
$this->query 'INSERT INTO ECG (
                        PCNTE_CDG,
                        ECG_PICTURE_RUTE,
                        ECG_OBS,
                        ECG_DIAGNOSIS,
                        ECG_AUD_FEC_CREAT,
                        ECG_AUD_CREAT_BY
                    ) VALUES ('
                        
Util::convert2Sql($ecg->getPcnteCdg()) . ','
                        
Util::convert2Sql($ecg->getEcgPictureRute()) . ','
                        
Util::convert2Sql($ecg->getEcgObs()) . ','
                        
Util::convert2Sql($ecg->getEcgDiagnosis()) . ','
                        
'NOW(),'
                        
Util::convert2Sql($ecg->getEcgAudCreatBy())
                    . 
')';
                    
        
$this->con->setQuery($this->query);
        return 
$this->con->executeUpdate();
    } 
Ahí esta por si a alguien le sirve o tiene el mismo problema, así nos evitamos los eternos if validando si el campo viene nulo y eso.

Cualquier duda me pueden consultar.

Saludos
__________________
se despide hasta la proxima
Gonzalo Castillo

Etiquetas: insert, nulos
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 17:26.