Foros del Web » Programando para Internet » PHP »

Insertar valor NULL en un campo de una tabla MySQL 5 desde script PHP

Estas en el tema de Insertar valor NULL en un campo de una tabla MySQL 5 desde script PHP en el foro de PHP en Foros del Web. Hola, quiero insertar el valor NULL en un campo de una tabla MySQL 5 desde un script PHP. Por ejemplo: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código php: Ver ...
  #1 (permalink)  
Antiguo 22/07/2009, 00:03
 
Fecha de Ingreso: octubre-2008
Mensajes: 276
Antigüedad: 15 años, 6 meses
Puntos: 1
Insertar valor NULL en un campo de una tabla MySQL 5 desde script PHP

Hola, quiero insertar el valor NULL en un campo de una tabla MySQL 5 desde un script PHP.

Por ejemplo:

Código php:
Ver original
  1. $Usuario = "Pepe";
  2. $Contrasenia = "1234";
  3. $Tipo = NULL;
  4.  
  5. $sql = "insert into usuario(Usuario,Contrasenia,Tipo) values ('$Usuario','$Contrasenia','$Tipo')";
  6. $Consulta = mysql_query($sql, $Connection);

Yo quiero que PHP me genere esto:

Código php:
Ver original
  1. insert into usuario(Usuario,Contrasenia,Tipo) values ('Pepe','1234',NULL)

pero me genera esto:

Código php:
Ver original
  1. insert into usuario(Usuario,Contrasenia,Tipo) values ('Pepe','1234','')

y no es lo mismo, porque si intento insertar lo primero desde el cliente MySQL SQLyog, me lo inserta sin problemas pero si intento insertar lo segundo, no me lo inserta porque tengo una clave foránea en la tabla Usuario hacia la tabla Tipo que es la tabla que contiene los tipos y no me deja meter el valor '' en el campo Tipo pero sí el valor NULL.

Si en vez de poner:

Código php:
Ver original
  1. $Tipo = NULL

pongo:

Código php:
Ver original
  1. $Tipo = "NULL"
o
Código php:
Ver original
  1. $Tipo = 'NULL'

me genera:

Código php:
Ver original
  1. insert into usuario(Usuario,Contrasenia,Tipo) values ('Pepe','1234','NULL')

con lo que tampoco me vale porque le mete comillas simples a NULL con lo que deja de ser NULL para ser un texto.

He visto que ha habido gente con este mismo problema pero la solución propuesta por GatorV en este post a mi no me ha servido.

¿Sabéis cómo puedo hacerlo?

Gracias.

EDITO:

Al final lo he hecho así:

Código php:
Ver original
  1. $sql = "insert into usuario(Usuario,Contrasenia,Tipo)";
  2. if (($Condicion == "A") or ($Condicion == "B"))
  3.     $sql .= " values ('$Usuario','$Contrasenia',NULL)";
  4. else
  5.     $sql .= " values ('$Usuario','$Contrasenia','$Tipo')";
__________________
Uso Apache 2.2 con PHP 5.5.9 y MySQL 5.1
Uso Eclipse IDE for Java Developers, Version: Mars.1 Release (4.5.1), Build id: 20150924-1200 para programar en Java bajo Windows

Última edición por letni; 22/07/2009 a las 00:39
  #2 (permalink)  
Antiguo 22/07/2009, 02:57
 
Fecha de Ingreso: enero-2008
Mensajes: 381
Antigüedad: 16 años, 3 meses
Puntos: 19
Respuesta: Insertar valor NULL en un campo de una tabla MySQL 5 desde script PHP

Veo que ya lo has solucionado pero de todas maneras te voy a decir el fallo por si te sirve mas adelante.

Si asignas null a un variable php lo procesa como un tipo booleano, pero PHP es independiente de MySQL, entonces si llamas a esa variable te devolvera NULL que es nada.

Lo que necesitas ahi es enviar NULL a MySQL para que lo procese como booleano, pero todas las consoltas se envian con texto (strings).

Tambien hay que tener en cuenta que NULL es un tipo especial si en la consulta, si lo metes entre comillas en la consulta MySQL lo reconocera como texto (strings).

Entonces lo correcto seria:

$Tipo = "NULL" (O con comillas simples, es lo mismo)

$sql = "insert into usuario(Usuario,Contrasenia,Tipo) values ('$Usuario', '$Contrasenia', $Tipo)";

Y en caso se que quisieras de que segun algunas circunstancia se envie NULL o una string (cadena de texto) pues pon las comillas desde antes

if ($_POST['edad'] < 18 {
$tipo = "NULL";
} else {
$tipo = "'mayor de edad'" //dentro de las comillas dobles (") hay dos comillas simples (') asi que al hacer la consulta se enviara correctamente para que MySQL lo procese como string (si no tiene comillas y no hace referencia a un funcion o un campo existente MySQL dara error)

Si es un poco lioso, pero ten en cuenta que la consulta enviada tiene que seguir unas normas y una estructuras para que MySQL la procese bien. Entonces desde PHP tienes que generar la consulta conforme a ello, ya que como dije antes son lenguajes independientes...

Espero que me hayas entendido.

Un Saludo.
  #3 (permalink)  
Antiguo 22/07/2009, 03:34
 
Fecha de Ingreso: octubre-2008
Mensajes: 276
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Insertar valor NULL en un campo de una tabla MySQL 5 desde script PHP

Te entendí perfectamente, el problema era que ponía comillas simples al hacer referencia a mi variable $Tipo en la sentencia de inserción SQL.

Leí mal el post que referencié pero me hubiera servido también.

Ahora ya lo hace de forma correcta, muchas gracias.
__________________
Uso Apache 2.2 con PHP 5.5.9 y MySQL 5.1
Uso Eclipse IDE for Java Developers, Version: Mars.1 Release (4.5.1), Build id: 20150924-1200 para programar en Java bajo Windows

Última edición por letni; 22/07/2009 a las 03:42
  #4 (permalink)  
Antiguo 02/08/2013, 02:58
 
Fecha de Ingreso: enero-2005
Mensajes: 8
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Insertar valor NULL en un campo de una tabla MySQL 5 desde script PHP

yo lo resolvi con esta funcion

function Vacio($data){
if($data != ''){
return "'$data'";
} else {
return "NULL";
}
}

simplemente pasa la funcion Vacio al campo dentro del insert y listo
este determina si el capo esta vacio o no y manda la respuesta decuada
  #5 (permalink)  
Antiguo 02/08/2013, 07:51
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Insertar valor NULL en un campo de una tabla MySQL 5 desde script PHP

Cita:
Iniciado por prepa10 Ver Mensaje
yo lo resolvi con esta funcion

function Vacio($data){
if($data != ''){
return "'$data'";
} else {
return "NULL";
}
}

simplemente pasa la funcion Vacio al campo dentro del insert y listo
este determina si el capo esta vacio o no y manda la respuesta decuada
Por favor antes de postear tu respuesta VERIFICA que no sea un tema antiguo, ten en cuenta de que es del 2009 NO revivas temas viejos

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #6 (permalink)  
Antiguo 14/01/2016, 06:21
Avatar de balanza_86  
Fecha de Ingreso: noviembre-2015
Mensajes: 4
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Insertar valor NULL en un campo de una tabla MySQL 5 desde script PHP

Yo pienso que la información es buena ahora y siempre. Ya discreparía si se tratase así por la compatibilidad entre versiones pero hay libros (antiquísimos) que todavía siguen siendo biblia para muchos de nosotros.

Bajo mi punto de vista estaría bien que se postease en el formulario con la versión utilizada y de qué herramientas. Así sería más fácil saber si hay funciones obsoletas, etc.

En fin, es una idea. Que esto va de aportar

edito:

A mí me ha venido muy bien leer la información de prepa10, ahora que estoy aprendiendo.

Gracias!

Última edición por balanza_86; 14/01/2016 a las 06:26 Razón: NO HABLÉ DEL TEMA CONCRETO ANTES
  #7 (permalink)  
Antiguo 14/01/2016, 06:32
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, 5 meses
Puntos: 2658
Respuesta: Insertar valor NULL en un campo de una tabla MySQL 5 desde script PHP

Por favor, @balanza_86, respeta las Políticas de Uso de Foros del Web:

Cita:
2.7 Los usuarios no pueden revivir o reactivar temas publicando información inútil o sin sentido, o llevando a cabo cualquier otra acción para deliberadamente mantener arriba en el índice del foro dicho tema o aumentar el contador de mensajes.
Si aún no las has leído, hazlo. Evitarás problemas y malos entendidos. Recuerda que todos los foros están moderados.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 12:33.