Establecer el valor en NULL en MySQL

132

Quiero establecer un valor NULLsi no se coloca nada en el cuadro de texto en el formulario que estoy enviando. ¿Cómo puedo hacer que esto suceda? Intenté insertar 'NULL'pero esto solo agrega la palabra NULLen el campo.

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

muttley91
fuente
12
Tendrá que insertar la palabra null sin las comillas ..
Mike Christensen

Respuestas:

268

No ponga NULLcomillas dentro de su declaración de actualización. Esto debería funcionar:

UPDATE table SET field = NULL WHERE something = something
Fosco
fuente
Lo mismo aquí: Static analysis: 1 errors were found during analysis. Unrecognized keyword. (near "NULL" at position 35) SQL query: UPDATE programs SET flash = NULL. - Actualización: ¡fue la siguiente WHEREcondición la que causó el problema!
Kai Noack
16

Probablemente estés 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;
Andrew Ensley
fuente
10
UPDATE MyTable
SET MyField = NULL
WHERE MyField = ''
Bassam Mehanni
fuente
Creo que el problema es que está usando: 'NULL' en lugar de NULL.
Nir Alfasi
Pero, con un poco de cuidado, esto podría arreglar los campos vacíos existentes que quieren ser nulos: P
Erenor Paz
6
if (($_POST['nullfield'] == 'NULL') || ($_POST['nullfield'] == '')) {
   $val = 'NULL';
} else {
   $val = "'" . mysql_real_escape_string($_POST['nullfield']) . "'";
}

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

si pones 'NULL'en tu consulta, simplemente estás insertando una cadena de 4 caracteres. Sin las comillas, NULLes el valor nulo real.

Marc B
fuente
5

Uso NULL(sin las comillas a su alrededor).

UPDATE users SET password = NULL where ID = 4
Cohete Hazmat
fuente
5

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

xdazz
fuente
3

Asumiendo que la columna permite una configuración nula,

$mycolupdate = null; // no quotes

debería hacer el truco

Mr Griever
fuente
1
... suponiendo que no lanzas $mycolupdateun hilo en una etapa posterior.
Álvaro González
2

Las respuestas dadas aquí son buenas, pero todavía estaba luchando para publicar NULL y no cero en la tabla mysql.

Finalmente noté que el problema estaba en la consulta de inserción que estaba usando

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

Hasta aquí todo bien.

Mi consulta de inserción fue mala.

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

Corregí la consulta para leer.

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

Entonces, la cantidad de $ está fuera de la cadena principal. Mi tabla sql ahora acepta registrar cantidad nula en lugar de 0

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

El problema que tuvo es muy probable porque mysql diferencia entre nulo escrito en mayúsculas y nulo escrito en minúsculas.

Entonces, si usó una declaración de actualización con nulo, no funcionaría. Si lo establece en NULL, funcionaría bien.

Gracias.

usuario7509683
fuente