7
votes

Zend: Comment insérer des valeurs null dans mysql

J'utilise Zend Cadre avec MySQL, Apache et Ubuntu 9.04.

J'essaie d'insérer des valeurs null dans la base de données comme ceci: xxx

mais "null ' est stocké dans la base de données comme chaîne et non null .

Lorsque j'utilise ceci: xxx

mais rien ne se passe et entrée précédente est inchangé.

Que dois-je faire pour insérer des valeurs null dans mysql?


4 commentaires

Quand j'utilise $ PERSONOBJ-> SETPERSONEMAIL ('NULL'); Il insère null comme une chaîne. Quand j'utilise $ PERSONOBJ-> SETPERSONEMAIL (NULL); L'entrée précédente est inchangée et rien ne se passe.


Quel type d'objet est $ personobj ? Comme d'autres déjà disaient, sans connaître la mise en œuvre de SetPersonemail () Vous ne pouvez pas déterminer ce qui doit être transmis.


$ PERSONOBJ est l'objet record de la personne. SetPersonemail () est un Mibrod pour définir la valeur de la saisie de personnage dans la base de données. Enregistrer () est une méthode pour stocker toutes les valeurs définies dans la base de données.Il est une pratique courante dans le cadre Zend. Comme je l'ai dit, cela fonctionne parfaitement pour des valeurs de chaîne, mais problème est une entrée nulle.


Cela n'aide pas ... il est crucial de connaître la mise en œuvre setpersonemail () et sauvegarder () ; La manière dont les données sont écrites dans la base de données sont particulièrement importantes. Beaucoup de choses peuvent arriver entre appeler sauvegarder () et l'heure lorsque les données sont écrites dans la base de données.


3 Réponses :


0
votes

Je pense que mettre NULL dans des citations est ce qui le fait ressembler à une chaîne.

Je ne connais pas votre méthode, mais pour un insert direct, bien que la commande mySQL insert, les citations simples autour d'une null sont incorrectes.


3 commentaires

J'ai aussi essayé ce $ PersonObj-> SetPersonemail (NULL); Mais rien ne s'est passé. L'entrée précédente est inchangée.


Il dépend entièrement sur la manière dont la méthode SetPersonemail () fonctionne, et s'il est valide pour Mise à jour une entrée.


Oui il met à jour. Quand j'utilise ce $ PERSONOBJ-> SETPERSONEMAIL ('TEST@TEST.COM '); Il remplace la saisie de la base de données précédente avec test@test.com. Mais mon problème est de supprimer l'entrée précédente et d'insérer NULL si un utilisateur supprimait son adresse e-mail.



1
votes

La première pensée serait tout droit passant dans le mot-clé NULL, sans citations autour de lui. Comme le dit Pavium, les citations autour de lui transforment en une chaîne.


2 commentaires

J'ai essayé ce $ PERSONOBJ-> SETPERSONEMAIL (NULL); Mais pas de chance. En fait, je mette à jour cette entrée. Un email existe déjà dans la base de données et je souhaite supprimer cela et insérer NULL.


Pourrait essayer des citations vides, bien que cela ne ferait probablement que la chaîne vide. Avez-vous essayé d'accéder plus directement à la colonne, plutôt que de la fonction définie? IE: $ PERSONOBJ-> Personemail = NULL;



17
votes

Si vous ne modifiez aucune des valeurs après leur attribution,

new $personObj->setPersonEmail(new Zend_Db_Expr('NULL'));


1 commentaires

Cela a fonctionné pour moi aussi, mais je dois faire nouveau zend_db_expr ('null')