IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

[Debutant]Insertion nulle mais '' dans la base


Sujet :

PostgreSQL

  1. #1
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut [Debutant]Insertion nulle mais '' dans la base
    Bonjour à tous !

    Je suis débutant en postgres et je galere pour un ptit bidule. Lors de cette insertion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	echo "Insert into \"antiquaireClient\" VALUES &#40;'".$row&#91;3&#93;."', '".$row&#91;1&#93;."', '".$row&#91;2&#93;."', '".$row&#91;8&#93;."', '".$row&#91;9&#93;."', '".$row&#91;7&#93;."'&#41;;<br />";
    si l'une de ces valeurs est nulle, le champ contiendra ''. Je me doute bien que cela viens de mes simple quotes mais lorsqu'il s'agit d'une chaine, je suis obligé de les mettre.

    LA solution est certainement toute simple mais je n'ai pas trouvé en cherchant dans le forum et google.

    Merci d'avance

  2. #2
    Membre averti Avatar de piff62
    Inscrit en
    Décembre 2003
    Messages
    431
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2003
    Messages : 431
    Points : 417
    Points
    417
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo "Insert into antiquaireClient VALUES &#40;'".$row&#91;3&#93;."','".$row&#91;1&#93;."','".$row&#91;2&#93;."','".$row&#91;8&#93;."','".$row&#91;9&#93;."','".$row&#91;7&#93;."'&#41;;";
    Et avec ca ?

  3. #3
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut
    Je me suis mal exprimé, je m'en excuse.

    Pour passer ma requete, je suis obligé de mettre \" autour de mon nom de tabl car postgres met tout en minuscules sinon et ainsi ne reconnait pas la table. Il en va de même pour les noms de champs, je crois.

    Je posais ma question par rapport aux valeurs que j'insérais dans les champs avec $row.

    si je met juste , ca ne fonctionne pas si $row[8] est vide et qu'il s'agit d'un champ contenant une chaine de caractère.
    C'erst pourquoi je met mais du coup je me retrouve avec deux simple quotes ('') dans mon champ au lieu d'un champ vide.

  4. #4
    Membre averti

    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 338
    Points : 404
    Points
    404
    Par défaut
    Je me suis mal exprimé, je m'en excuse.

    Pour passer ma requete, je suis obligé de mettre \" autour de mon nom de tabl car postgres met tout en minuscules sinon et ainsi ne reconnait pas la table. Il en va de même pour les noms de champs, je crois.
    J'ai l'impression que tu as déja utilisé SQL Server, et en a pris une mauvaise habitude

    effectivement, PostgreSQL viens du monde Unix et donc respecte les Majuscules et le minuscules. donc table est différent de Table qui est aussi différent de TABLE.

    pour éviter ce genre de désagrément et avoir des requêtes portables, je te conseille fortement d'écrire le nom des tables en minuscule ansi que le nom des champs, comme cela tu n'est pas obliger d'échapper le ".

    mais du coup je me retrouve avec deux simple quotes ('') dans mon champ au lieu d'un champ vide.
    tous simplement car ta variable $row[8] contient les '', donc lors du remplissage de ton tableau tu devrais les virer, si il se trouve en début ou a la fin de ton champ et ensuite écrire :

    du coup si ta variable est vide tu ne va rien inserer dans ton champ.

    KrysKool
    Christophe Chauvet
    Consultant Odoo
    Python / PostgreSQL

  5. #5
    Membre habitué
    Inscrit en
    Mai 2002
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 131
    Points : 150
    Points
    150
    Par défaut
    Citation Envoyé par kryskool
    Je me suis mal exprimé, je m'en excuse.

    Pour passer ma requete, je suis obligé de mettre \" autour de mon nom de tabl car postgres met tout en minuscules sinon et ainsi ne reconnait pas la table. Il en va de même pour les noms de champs, je crois.
    J'ai l'impression que tu as déja utilisé SQL Server, et en a pris une mauvaise habitude

    effectivement, PostgreSQL viens du monde Unix et donc respecte les Majuscules et le minuscules. donc table est différent de Table qui est aussi différent de TABLE.
    PostgreSQL ne tient pas compte de la casse si l'on n'entoure pas les noms des tables, champs... avec des guillemets. Ainsi, faire "SELECT * FROM USER" ou "SELECT * FROM uSeR" revient exactement au même. Par contre, c'est quand on rajoute des guillemets que la casse devient importante !

    Bref, pourquoi ne pas simplement faire sauter ces guillemets ? (Mais, évidemment, comme tu le précises, question portabilité, c'est pas l'idéal )

  6. #6
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut
    merci beaucoup.

    Non je n'ai jamais utilisé SQL Server
    comme quoi !

    mais il y a une chose dont je suis sur c'est que ma variable $row[8] est bel et bien vide. les deux simples quotes viennent de : Ce sont les deux simples quotes qui entourent les deux guillemets.
    Il suffirait de les enlever mais ce ne marche pas.

    Je trouvais

    merci quand meme. Je sens que j'ai beaucoup a apprendre sur pgsql

  7. #7
    Membre averti

    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 338
    Points : 404
    Points
    404
    Par défaut
    Bon je me suis embrouiller, ce que je voulais dire, c'est que l'on pouvais tout a fais crée les tables dans la meme database meme si elle était différencié par des minuscules et des majuscules, dans ce cas la si on n'utilise pas les " seul la table écrit entièrement en minuscule pourra être appellé.

    KrysKool
    Christophe Chauvet
    Consultant Odoo
    Python / PostgreSQL

  8. #8
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut
    ok. Merci beaucoup, c'est bon a savoir

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 133
    Points : 59
    Points
    59
    Par défaut
    pourquoi pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $query= "Insert into \"antiquaireClient\" VALUES &#40;'".$row&#91;3&#93;."', '".$row&#91;1&#93;."', '".$row&#91;2&#93;."', '".$row&#91;8&#93;."', '".$row&#91;9&#93;."', '".$row&#91;7&#93;."'&#41;";
    $query = str_replace&#40;"''","null",$query&#41;;
    echo $query;

  10. #10
    Membre expérimenté

    Inscrit en
    Mai 2002
    Messages
    720
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 720
    Points : 1 594
    Points
    1 594
    Par défaut
    SI tu veux mettre un champ a NULL, il faut mettre NULL, et pas '' qui est une chiane vide. Tu peux faire comme te le sugère le_ben, mais si tu utilise des chaines vides et des valeurs nulles, ca ne passera pas .... La solution c'est de mettre les quotes dans tes variables, ou de mettre la chaine NULL dans celles-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $A='NULL';
    $B = '\'Une chaine\'';
    $C = '\'\''; // Une chaine vide
     
    $sql = "INSERT INTO matable VALUES&#40;$A,$B,$C&#41;";
    Bon developpement !

    Smortex

    Les FAQ Assembleur - Linux
    In The Beginning Was The Command Line Neal Stephenson

  11. #11
    Membre habitué
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mars 2005
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 251
    Points : 174
    Points
    174
    Par défaut
    OK, merci a tous.

    Pour l'instant , je me debrouille avec ma base avec ''.

    Mais avant la prod, je testerais totue vos solutions.
    Je vous remercie.

    bonne jounrée a tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Conception] Problème d'insertion de tuples dans la base
    Par grumly22 dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 11/05/2006, 10h02
  2. Réponses: 3
    Dernier message: 27/03/2006, 18h25
  3. [MySQL] Insertion d'image dans une base de données
    Par dragonfly dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 16/03/2006, 15h59
  4. [debutant] insertion d'éléments dans une List
    Par gwenou60 dans le forum Composants
    Réponses: 1
    Dernier message: 05/12/2005, 10h59
  5. Réponses: 11
    Dernier message: 01/06/2005, 16h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo