erreur PHP/SQL : "Column 'x' cannot be null ) 1"

trek
Invité n'ayant pas de compte PHPfrance

21 févr. 2013, 12:42

Bonjour,

Je me permets de vous demander de l'aide car après avoir testé mon formulaire et la base de données qui est reliée, tout marchait comme sur des roulettes : Je saisissais mon formulaire, j'appuyais sur Envoyer et ma base était alimentée. Enfin ça c'était quand je faisais des tests en local sur mon pc avec Wamp Server. Bref, la vie de rêve.

Sauf qu'après avoir faire une sauvegarde de ma base et l'avoir importée dans le MyPhpAdmin de mon hébergeur internet et après avoir modifié les serveur, mot de passe, login et nom de la base de données, et bien j'ai une magnifique erreur que voici :

"Array ( [0] => 23000 [1] => 1048 [2] => Column 'civil' cannot be null ) 1"

Les champs de ma table ne peuvent pas être nul, donc je comprends à moitié ce message. Sauf que chez moi, le champs "civil" est rempli via une liste déroulante dans mon formulaire. J'ai même essayé de mettre "selected" dans la balise <option> de mon <select> pour voir si ça ne venait pas de là.

Bref, je ne comprends pas pourquoi ça marchait en local et ça ne marche plus en ligne.
Est-ce que ça viendrait de la version de MySQL de mon hébergeur ? de sa version de PHP ? ou alors de tout autre chose ?

Merci.

Petit nouveau ! | 6 Messages

21 févr. 2013, 14:29

Vérifie la valeur que tu utilises pour mettre à jour ta colonne "civil". Si une valeur "vide" est possible mais que la colonne ne peut pas être nulle, tu peux caster la valeur en chaine "(string) $civil" ou en entier "(int) $civil" avant de l'enregistrer.

trek
Invité n'ayant pas de compte PHPfrance

21 févr. 2013, 16:34

Ca y est, je viens de trouver mon erreur, si ça marchait en local et pas en ligne, c'est parce que dans mon script PHP, il y a une partie où le programme envoie un mail et si l'envoi est ok, alors on "unset" les variables avant d'enregistrer ces dernières dans la base de données.
Quand j'étais hors ligne, le mail ne partait pas, j'avais donc une erreur et du coup les variables n'étaient pas effacées, le script continué et les variables pouvaient alimentaient ma base de données. C'est donc une erreur de bloc dans mon script. Ouf ...

Merci "olvlvl".

ps : je ne savais pas qu'en testant la valeur de retour de la fonction Mail() ça relancerait la fonction (du coup on reçoit le mail 2 fois).