Variable permettant d'attribuer la valeur NULL dans une BDD

Fermé
chantaussel Messages postés 137 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 9 juillet 2014 - 20 févr. 2013 à 13:12
chantaussel Messages postés 137 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 9 juillet 2014 - 20 févr. 2013 à 15:16
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:

mysql_query("UPDATE leaves SET nom='".$nom."',prenom='".$prenom."',date_n='".$date_n."',lieu_n='".$lieu_n."' WHERE id=".$id);






2 réponses

Utilisateur anonyme
20 févr. 2013 à 13:20
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 :

$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);
1
chantaussel Messages postés 137 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 9 juillet 2014 30
20 févr. 2013 à 15:16
Cool, c'est ça!
Merci encore :)
-1