Définir la valeur sur NULL dans MySQL

133

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

Je ne suis pas sûr du code que je devrais fournir pour cela, j'écris juste une requête UPDATE.

muttley91
la source
12
Vous devrez insérer le mot null sans les guillemets ..
Mike Christensen

Réponses:

269

Ne mettez pas de NULLguillemets dans votre déclaration de mise à jour. Cela devrait fonctionner:

UPDATE table SET field = NULL WHERE something = something
Fosco
la source
Idem ici: Static analysis: 1 errors were found during analysis. Unrecognized keyword. (near "NULL" at position 35) SQL query: UPDATE programs SET flash = NULL. - Mise à jour: c'est la WHEREcondition suivante qui a causé le problème!
Kai Noack
16

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;
Andrew Ensley
la source
10
UPDATE MyTable
SET MyField = NULL
WHERE MyField = ''
Bassam Mehanni
la source
Je pense que le problème est qu'il utilise: 'NULL' au lieu de NULL.
Nir Alfasi
Mais, avec un peu de prudence, cela pourrait corriger les champs vides wanna-be-null existants: 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 vous mettez 'NULL'dans votre requête, alors vous insérez simplement une chaîne de 4 caractères. Sans les guillemets, NULLest la valeur nulle réelle.

Marc B
la source
5

Utilisez NULL(sans les guillemets).

UPDATE users SET password = NULL where ID = 4
Fusée Hazmat
la source
5

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

xdazz
la source
3

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

$mycolupdate = null; // no quotes

devrait faire l'affaire

Monsieur Griever
la source
1
... en supposant que vous ne castiez pas en $mycolupdatechaîne ultérieurement.
Álvaro González
2

Les réponses données ici sont bonnes mais j'avais encore du mal à 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 pour 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

toiles
la source
Je recommanderais également d'abandonner les fonctions obsolètes de mysql_ et de passer à mysqli ou, ma préférence, PDO.
muttley91
2

Le problème que vous avez rencontré est probablement dû au fait que mysql fait la différence entre null écrit en majuscules et null écrit en minuscule.

Donc, si vous utilisiez une instruction de mise à jour avec null, cela ne fonctionnerait pas. Si vous le définissez sur NULL, cela fonctionnera correctement.

Merci.

user7509683
la source