8795 sujets

Développement web côté serveur, CMS

Bonjour,

J'ai une classe qui me permet de gérer ma connexion à la base de données. J'utilise des bind variable pour renseigner les variables de mes requêtes.
Je ne pense pas utile de vous indiquer le code de ma classe, car je ne pense pas que le problème vienne de là, vu les symptômes.

Sur une table, j'ai une colonne définie comme "NOT NULL". Via un outil quelconque, si j'essaye d'insérer ou modifier un enregistrement, sans que cette colonne soit renseignée, j'ai une erreur : normal.

Maintenant, j'autorise la valeur NULL pour cette colonne. Via ma classe, j'insère un enregistrement avec une variable qui n'est pas renseignée ( $colValue = NULL; ). Si je contrôle ensuite l'enregistrement, la colonne est bien à NULL (et ce n'est pas une chaine vide, c'est bien NULL).

Donc, ma classe sait parfaitement gérer une variable à NULL.
Si maintenant je remets la colonne à NOT NULL et que je fais une nouvelle insertion, identique à la précédente, je n'ai aucune erreur... et le pire, c'est que lorsque je consulte la table, la colonne contient la chaine vide !!

Mon code étant identique, n'ayant modifié que la structure de la table, je me demande s'il n'y aurait pas une option dans la configuration de PHP ou de MySql qui justifierait ce comportement. Je n'arrive pas à trouver car si je cherche des informations sur NULL, PHP et MySqli, je tombe sur d'autres problèmes.
Modifié par marcmendez (05 Aug 2009 - 14:39)
Salut,

je ne comprends pas trop comment c'est possible...

Il faudrait debugger la requête qui est effectivement exécutée dans chaque cas.
Ben moi non plus, je vois pas trop comment procéder... Surtout que vu les symptômes que j'ai décris, j'opterais plus pour un "problème" côté MySql (ou entre PHP et MySql). Je ne dis pas par là que je mets mon code hors de cause, mais les tests semblent montrer qu'ils n'est pas concerné (je vous rassure, je traite indifférement les variables, qu'elles sont à NULL ou pas !)