Variable permettant d'attribuer la valeur NULL dans une BDD
chantaussel
Messages postés
140
Statut
Membre
-
chantaussel Messages postés 140 Statut Membre -
chantaussel Messages postés 140 Statut Membre -
Bonjour,
J'ai un formulaire qui permet de mettre à jour les données d'une BDD. Dans mon script je récupère les infos entrées par l'utilisateur, je les stocke dans des variables que j'utilise pour faire ma requête SQL de mise à jour avec UPDATE. Certaines données peuvent rester vides (soit parce qu'on ne dispose pas de l'info pour l'instant, soit parce qu'elles doivent être effacées car elles ne sont plus d'actualité) et sont donc NULL dans la BDD.
Lorsque je récupère les infos dans le formulaire, je me retrouve donc avec des variables vides (celles dont les infos n'ont pas été remplies ou ont été effacées). Le problème c'est que dans ma requête en UPDATE une variable vide ne va pas s'enregistrer comme NULL dans la BDD mais comme '(vide)', ce qui va donner des 0000-00-00, notamment pour les dates, ce que je ne veux pas. Je voudrais que la valeur NULL ne soit pas écrasée dans la BDD.
J'ai essayé en attribuant la chaine de caractère 'null' à la variable, si celle-ci était vide, mais ça ne marche pas, car la BDD la considère réellement comme une chaine de caractère.
Ma question est donc: quelle valeur attribuer à une variable dans une requête en UPDATE pour que celle-ci renvoie la valeur NULL dans la BDD?
Mon code ci-dessous pour concrétiser ma question:
J'ai un formulaire qui permet de mettre à jour les données d'une BDD. Dans mon script je récupère les infos entrées par l'utilisateur, je les stocke dans des variables que j'utilise pour faire ma requête SQL de mise à jour avec UPDATE. Certaines données peuvent rester vides (soit parce qu'on ne dispose pas de l'info pour l'instant, soit parce qu'elles doivent être effacées car elles ne sont plus d'actualité) et sont donc NULL dans la BDD.
Lorsque je récupère les infos dans le formulaire, je me retrouve donc avec des variables vides (celles dont les infos n'ont pas été remplies ou ont été effacées). Le problème c'est que dans ma requête en UPDATE une variable vide ne va pas s'enregistrer comme NULL dans la BDD mais comme '(vide)', ce qui va donner des 0000-00-00, notamment pour les dates, ce que je ne veux pas. Je voudrais que la valeur NULL ne soit pas écrasée dans la BDD.
J'ai essayé en attribuant la chaine de caractère 'null' à la variable, si celle-ci était vide, mais ça ne marche pas, car la BDD la considère réellement comme une chaine de caractère.
Ma question est donc: quelle valeur attribuer à une variable dans une requête en UPDATE pour que celle-ci renvoie la valeur NULL dans la BDD?
Mon code ci-dessous pour concrétiser ma question:
mysql_query("UPDATE leaves SET nom='".$nom."',prenom='".$prenom."',date_n='".$date_n."',lieu_n='".$lieu_n."' WHERE id=".$id);
A voir également:
- Variable permettant d'attribuer la valeur NULL dans une BDD
- La valeur relative de 9 dans 295 700 est - Forum Excel
- Faites afficher avec un fond coloré les cellules qui contiennent une valeur comprise entre 250 et 350. quel nombre est dessiné en surbrillance ? ✓ - Forum Excel
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp ✓ - Forum Word
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
- Formule excel si contient texte alors valeur ✓ - Forum Excel
2 réponses
Bonjour
Si tu veux mettre un champ à NULL, il faut mettre NULL et non pas 'NULL' qui est une chaîne de caractères comme tu l'as remarqué.
Avec le code tel que tu le proposes, c'est impossible, puisque tu as des apostrophes autour des valeurs, tu vas donc toujours insérer des valeurs non NULL.
Il faut ré-écrira ton instruction sans les apostrophes, et mettre les apostrophes dans les variables si elles contiennent une valeur réelle , ou bien NULL si tu veux NULL. exemple :
Si tu veux mettre un champ à NULL, il faut mettre NULL et non pas 'NULL' qui est une chaîne de caractères comme tu l'as remarqué.
Avec le code tel que tu le proposes, c'est impossible, puisque tu as des apostrophes autour des valeurs, tu vas donc toujours insérer des valeurs non NULL.
Il faut ré-écrira ton instruction sans les apostrophes, et mettre les apostrophes dans les variables si elles contiennent une valeur réelle , ou bien NULL si tu veux NULL. exemple :
$nom="'machin'";
$prenom="'Pierre'";
$date_n="NULL";
...
mysql_query("UPDATE leaves SET nom=".$nom.",prenom=".$prenom.",date_n=".$date_n.",lieu_n=".$lieu_n." WHERE id=".$id);