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.


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

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;

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

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.


5

Utilisez NULL(sans les guillemets).

UPDATE users SET password = NULL where ID = 4

5

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


3

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

$mycolupdate = null; // no quotes

devrait faire l'affaire


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


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.