web-dev-qa-db-fra.com

Définir la valeur sur NULL dans MySQL

Je souhaite qu'une valeur soit définie sur NULL si rien n'est placé dans la zone de texte du formulaire que je soumets. Comment puis-je y arriver? J'ai essayé d'insérer 'NULL' mais cela n'ajoute que Word NULL dans le champ.

Je ne sais pas quel code je devrais fournir pour cela, je suis en train d'écrire une requête UPDATE.

113
muttley91

Ne mettez pas NULL entre guillemets dans votre instruction de mise à jour. Cela devrait fonctionner:

UPDATE table SET field = NULL WHERE something = something
234
Fosco

Vous citez probablement 'NULL'. NULL est un mot réservé dans MySQL, et peut être inséré/mis à jour sans guillemets:

INSERT INTO user (name, something_optional) VALUES ("Joe", NULL);
UPDATE user SET something_optional = NULL;
16
Andrew Ensley
UPDATE MyTable
SET MyField = NULL
WHERE MyField = ''
10
Bassam Mehanni
if (($_POST['nullfield'] == 'NULL') || ($_POST['nullfield'] == '')) {
   $val = 'NULL';
} else {
   $val = "'" . mysql_real_escape_string($_POST['nullfield']) . "'";
}

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

si vous mettez 'NULL' dans votre requête, vous n'insérez qu'une chaîne de 4 caractères. Sans les guillemets, NULL est la valeur NULL réelle.

6
Marc B

Vous devez insérer null, pas la chaîne de 'NULL'.

5
xdazz

Utilisez NULL (sans les guillemets).

UPDATE users SET password = NULL where ID = 4
4
Rocket Hazmat

En supposant que la colonne autorise un paramètre nul,

$mycolupdate = null; // no quotes

devrait faire l'affaire

3
Mr Griever

Les réponses données ici sont bonnes mais je luttais toujours pour publier NULL et non zéro dans la table mysql.

Enfin, j'ai noté que le problème était dans la requête d'insertion que j'utilisais

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

Jusqu'ici tout va bien.

Ma requête d'insertion était mauvaise.

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

J'ai corrigé la requête à lire.

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

Donc, la quantité $ est en dehors de la chaîne principale. Ma table SQL accepte maintenant d'enregistrer une quantité nulle au lieu de 0

2
webs

Le problème que vous avez eu est probablement dû au fait que mysql fait la distinction entre null écrit en majuscules et null écrit en minuscules.

Donc, si vous utilisiez une instruction update avec null, cela ne fonctionnerait pas. Si vous le définissez sur NULL, cela fonctionnerait bien.

Merci.

2
user7509683