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.


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

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;

10
UPDATE MyTable
SET MyField = NULL
WHERE MyField = ''

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.


5

Uso NULL(sin las comillas a su alrededor).

UPDATE users SET password = NULL where ID = 4


3

Asumiendo que la columna permite una configuración nula,

$mycolupdate = null; // no quotes

debería hacer el truco


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


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.