2012-02-16 18 views
82

Quiero que un valor se establezca en NULL si no se coloca nada en el cuadro de texto en el formulario que estoy enviando. ¿Cómo puedo hacer que esto suceda? He intentado insertar 'NULL' pero esto simplemente agrega la palabra NULL en el campo.Establecer valor en NULL en MySQL

No estoy seguro de qué código debo proporcionar para esto, solo estoy escribiendo una consulta de ACTUALIZACIÓN.

+9

Tendrá que insertar la palabra 'null' * sin * las comillas .. –

Respuesta

176

No ponga NULL comillas internas en su declaración de actualización. Esto debería funcionar:

UPDATE table SET field = NULL WHERE something = something 
+3

Huh. Podría haber jurado que lo intenté. Quizás tuve otro error al mismo tiempo. ¡Gracias! – muttley91

+0

Lo mismo aquí: 'Análisis estático: se encontraron 1 errores durante el análisis. Palabra clave no reconocida (cerca de "NULL" en la posición 35) Consulta SQL: ACTUALIZAR programas SET flash = NULL'. - Actualización: ¡Fue la siguiente condición 'DONDE' la que causó el problema! –

3

Uso NULL (sin las comillas alrededor de él).

UPDATE users SET password = NULL where ID = 4 
9
UPDATE MyTable 
SET MyField = NULL 
WHERE MyField = '' 
+0

Creo que el problema es que está usando: 'NULL' en lugar de NULL. – alfasin

+0

Pero, con un poco de cuidado, esto podría corregir los campos vacíos existentes wanna-be-null: P –

15

Probablemente se esté citando 'NULL'. NULL es una palabra reservada en MySQL, y se puede insertar/actualizar sin comillas:

INSERT INTO user (name, something_optional) VALUES ("Joe", NULL); 
UPDATE user SET something_optional = NULL; 
5
if (($_POST['nullfield'] == 'NULL') || ($_POST['nullfield'] == '')) { 
    $val = 'NULL'; 
} else { 
    $val = "'" . mysql_real_escape_string($_POST['nullfield']) . "'"; 
} 

$sql = "INSERT INTO .... VALUES ($val)"; 

si se pone 'NULL' en su consulta, a continuación, sólo estás insertando una cadena de 4 caracteres. Sin las comillas, NULL es el valor nulo real.

4

Debe insertar null, no la cadena de 'NULL'.

2

Suponiendo que la columna permite un ajuste nulo,

$mycolupdate = null; // no quotes 

debe hacer el truco

+1

... asumiendo que usted no emite '$ mycolupdate' en la cadena en una etapa posterior. –

0

Las respuestas que se dan aquí son buenos, pero yo todavía estaba luchando para publicar NULL y no es cero en la tabla de MySQL.

Finalmente me señaló el problema estaba en la consulta de inserción que yo estaba usando

$quantity= "NULL"; 
    $itemname = "TEST"; 

Hasta aquí todo bien.

Mi consulta de inserción fue incorrecta.

mysql_query("INSERT INTO products(quantity,itemname) 
    VALUES ('$quantity','$itemname')"); 

He corregido la consulta para leer.

mysql_query("INSERT INTO products(quantity,itemname) 
    VALUES ('".$quantity."','$itemname')"); 

Por lo tanto, la cantidad de $ está fuera de la cadena principal. Mi tabla sql ahora se acepta para registrar la cantidad nula en lugar de 0

+0

También recomendaría abandonar las funciones mysql_ obsoletas y cambiar a mysqli o, mi preferencia, PDO. – muttley91

1

El problema que tenía es muy probable porque mysql diferencia entre null escrito en mayúsculas y nulo escrito en mayúsculas.

Por lo tanto, si utilizó una declaración de actualización con nulo, no funcionaría. Si lo configura en NULL, funcionaría bien.

Gracias.

Cuestiones relacionadas