Foros del Web » Programando para Internet » PHP »

Ingresar NULL en MySQL

Estas en el tema de Ingresar NULL en MySQL en el foro de PHP en Foros del Web. Buen dia y buen karma para ustedes... Paso a plantear mi problema: Recupero valores de un formulario, y los convierto en variables: $c2 $p2 $c3 ...
  #1 (permalink)  
Antiguo 13/07/2012, 11:21
 
Fecha de Ingreso: septiembre-2009
Mensajes: 56
Antigüedad: 14 años, 7 meses
Puntos: 0
Ingresar NULL en MySQL

Buen dia y buen karma para ustedes...

Paso a plantear mi problema:

Recupero valores de un formulario, y los convierto en variables:

$c2
$p2
$c3
$p3
$c4
$p4
etc.

algunos de esos campos pueden NO haber sido ingresados por el usuario (lo cual es válido porque no son campos obligatorios en el formulario). Los campos en el formulario son numericos.
Lo que pretendo es que, si los campos NO fueron ingresados por el usuario, sus valores se guarden en la BBDD como NULL, pero no consigo hacerlo. Pongo a continuacion el codigo usado (incluyendo una funcion)

Código PHP:
function nullSiNecesario ($variable) {
    if (
$variable === or $variable === "0" or $variable === "" or $variable === " " or $variable === NULL
         { 
$resultado NULL; }
    else { 
$resultado $variable; }
    return 
$resultado;
    }

// convertimos los valores a null si fuera necesario...
$c2bd nullSiNecesario ($c2);
$c3bd nullSiNecesario ($c3);
$c4bd nullSiNecesario ($c4);

$p2bd nullSiNecesario ($p2);
$p3bd nullSiNecesario ($p3);
$p4bd nullSiNecesario ($p4);

//creamos una conexion
$conexion=mysql_connect($Host,$User,$Pass)
  or die(
"Problemas en la conexion");
  
//nos conectamos a la BBDD usando la variable $conexion 
mysql_select_db($BaseDatos,$conexion) or
  die(
"Problemas en la seleccion de la base de datos");

// insertamos los valores
mysql_query("INSERT INTO $Tabla3 (
`c2`,  `p2`, 
`c3`,  `p3`, 
`c4`,  `p4`) 
VALUES (
   '$c2bd', '$p2bd',
   '$c3bd', '$p3bd',
   '$c4bd', '$p4bd',)"
$conexion
   or die(
"Problemas en el insert".mysql_error());
mysql_close($conexion); // cierra la conexion a la BBDD

// No me marca error, pero al revisar la tabla, los campos NO ingresados por el usuario tienen valor 0 en lugar de tener NULL 
No me marca error, pero al revisar la tabla, los campos NO ingresados por el usuario tienen valor 0 en lugar de tener NULL .

Alguna idea de donde está mi error de lógica???

de antemano buen karma para ti que liste mi mensaje.
  #2 (permalink)  
Antiguo 13/07/2012, 11:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ingresar NULL en MySQL

En primer lugar un NULL en PHP no es igual a NULL de SQL, ¿si entiendes por qué?

Para poder ingresar un NULL dentro de una consulta debe ser literal, si usas un NULL nativo de PHP pues no colocará nada.

Código PHP:
// MAL
$foo NULL;

echo 
"SET columna = '$foo'"// SET columna = ''

// BIEN

$foo 'NULL';

echo 
"SET columna = $foo"// SET columna NULL 
Además de que un valor NULL para SQL debería ir sin comillas pues es un tipo de dato nativo, no una cadena de texto.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 13/07/2012, 14:24
 
Fecha de Ingreso: septiembre-2009
Mensajes: 56
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Ingresar NULL en MySQL

Gracias pateketrueke EXCELENTE explicación.

Soy relativamente novato con estas tecnologias, y tu explicación me hizo investigar y aprender mucho...

si te estoy entendiendo bien, deberia modificar la funcion de esta manera

Código PHP:

function nullSiNecesario ($variable) {
    if (
$variable === or $variable === "0" or $variable === "" or $variable === " " or $variable === NULL
         { 
$resultado 'NULL'; }
    else { 
$resultado $variable; }
    return 
$resultado;
    } 
y cuando la variable a subir a MySQL pretenda que sea NULL, subirla asi...

Código PHP:

mysql_query
("INSERT INTO $Tabla3 (
`c2`,  `p2`, 
`c3`,  `p3`, 
`c4`,  `p4`) 
VALUES (
   '$c2bd', '$p2bd',  
   $c3bd, $p3bd,     
   '$c4bd', '$p4bd',)"
$conexion
   or die(
"Problemas en el insert".mysql_error());
mysql_close($conexion); // cierra la conexion a la BBDD 

// si el valor de las variables no es null, lleva comillas, ejemplo '$c2bd', '$p2bd',
// si el valor de las variables si es null, no lleva comillas, ejemplo $c3bd, $p3bd, 
  #4 (permalink)  
Antiguo 13/07/2012, 14:36
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Ingresar NULL en MySQL

Quiero pensar que tus variables $c3bd y $p3bd solo tengan 2 opciones o sean NULL o sean dígitos, porque si son caracteres (string) esa consulta te arrojará error, ya que es necesario encerrar el string dentro de comillas
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #5 (permalink)  
Antiguo 14/07/2012, 06:57
 
Fecha de Ingreso: septiembre-2009
Mensajes: 56
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Ingresar NULL en MySQL

Cita:
Iniciado por Nemutagk Ver Mensaje
Quiero pensar que tus variables $c3bd y $p3bd solo tengan 2 opciones o sean NULL o sean dígitos
Correcto Nemutagk, solo digitos (números) que pueden incluir signo y punto decimal, o bien son NULL.

Gracias por contestar.

Etiquetas: formulario, mysql, null, sql, tabla, variables, usuarios
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 21:25.