2009-11-13 28 views
7

Estoy usando Zend Framework con MySQL, Apache y Ubuntu 9.04.Zend: Cómo insertar valores NULL en MySQL

Estoy tratando de insertar valores NULL en la base de datos de la siguiente manera:

$personObj->setPersonId('1'); 
$personObj->setPersonEmail('NULL'); 
$personObj->save(); 

Pero 'NULL' se almacena en la base de datos como una cadena y no NULL.

Cuando utilizo este:

$personObj->setPersonId('1'); 
$personObj->setPersonEmail(NULL); 
$personObj->save(); 

pero no pasa nada y la entrada anterior no ha cambiado.

¿Qué debo hacer para insertar valores NULL en MySQL?

+0

Sin comillas simples? –

+0

Cuando uso $ personObj-> setPersonEmail ('NULL'); Inserta NULL como cadena. Cuando uso $ personObj-> setPersonEmail (NULL); la entrada anterior no ha cambiado y no ocurre nada. – NAVEED

+0

¿Qué tipo de objeto es '$ personObj'? Como ya han dicho otros, sin conocer la implementación de 'setPersonEmail()' no se puede determinar qué se debe pasar. –

Respuesta

17

Si no está modificando cualquiera de los valores después de que se les asigna a continuación

new $personObj->setPersonEmail(new Zend_Db_Expr('NULL')); 
+1

sí, está funcionando. – NAVEED

+3

Esto funcionó para mí también, pero tengo que hacer 'nuevo Zend_Db_Expr ('NULL')' –

0

Creo que poner NULL entre comillas es lo que lo hace parecer una cadena.

no sé acerca de su método, pero para una inserción directa a través de un comando INSERT mysql, las comillas simples alrededor de un NULL son incorrectas.

+0

También he probado este $ personObj-> setPersonEmail (NULL); Pero nada pasó. La entrada anterior no ha cambiado. – NAVEED

+1

Depende ** completamente ** de cómo funciona el método 'setPersonEmail()', y si es válido para * actualizar * una entrada. – pavium

+0

Sí, se actualiza. Cuando uso este $ personObj-> setPersonEmail ('[email protected] '); Reemplaza la entrada de la base de datos anterior con [email protected] Pero mi problema es eliminar la entrada anterior e insertar NULL si un usuario elimina su dirección de correo electrónico. – NAVEED

1

Lo primero que pensamos es el paso directo en la palabra clave nula, sin comillas alrededor. Como dijo el pavium, las comillas que lo rodean lo convierten en una cuerda.

+0

He intentado esto $ personObj-> setPersonEmail (null); Pero sin suerte. En realidad, estoy actualizando esta entrada. Ya existe un correo electrónico en la base de datos y deseo eliminarlo e insertar NULL. – NAVEED

+0

Podría intentar con comillas vacías, aunque probablemente solo lo convertiría en una cadena vacía. ¿Ha intentado acceder a la columna más directamente, en lugar de a través de la función de configuración? es decir: $ personObj-> personEmail = null; – Tarka

Cuestiones relacionadas