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

Requêtes PostgreSQL Discussion :

Générer du MD5 dans un INSERT INTO


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre régulier
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 131
    Points : 72
    Points
    72
    Par défaut Générer du MD5 dans un INSERT INTO
    Bonjour

    Après avoir cherché sur le net, je n'ai pas trouvé ma réponse
    Je m'adresse donc à vous.

    Contexte :
    J'ai un fichier de données qui doit alimenter une table.
    Dans cette table réside un champ dont le contenu est une valeur de "type" MD5 généré par PHP.

    Y a'y-il un moyen au moment d'un insert de créer cette valeur MD5 ?

    Merci de votre aide

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Tu veux injecter une valeur déjà codée en MD5 par PHP ou tu veux coder le MD5 dans la requête SQL ?

    Dans le premier cas, le MD5 est tout simplement une valeur textuelle à mettre dans une colonne de type CHAR(32).

    Dans le second cas, il existe la fonction MD5('une_chaine') pour coder le MD5 en SQL.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre régulier
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 131
    Points : 72
    Points
    72
    Par défaut
    Merci de ta réponse
    Ma table de réception
    id_enseigne
    id_pdv --> clé primaire
    md5 en char(11)
    ....

    mon fichier de données à intégrer
    1,1,"quelque chose à générer pour le champ md5"
    1,2,"quelque chose à générer pour le champ md5"
    etc....

    Comment générer automatiquement une valeur MD5 dans mon insert ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO pointdevente
    VALUES (1,1,"une valeur md5")
    VALUES (1,2,"une valeur md5")
    Mon code php génère le MD5 avec en effet une fonction ou instruction md5
    Mais là j'ai besoin d'intégrer 150 lignes d'un coup.
    De plus, comment assurer l'unicité de la valeur md5 par rapport à celles déjà présentes dans la table de réception.

    Je ne pense pas d'ailleurs que cela soit possible....
    Là je me proposais ensuite de faire un select distinct quoique ma base risque de me prévenir si il existe des doublons

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par iviewclear Voir le message
    mon fichier de données à intégrer
    1,1,"quelque chose à générer pour le champ md5"
    1,2,"quelque chose à générer pour le champ md5"
    etc....

    Comment générer automatiquement une valeur MD5 dans mon insert ?
    INSERT INTO pointdevente
    VALUES (1,1,"une valeur md5")
    VALUES (1,2,"une valeur md5")

    Mon code php génère le MD5 avec en effet une fonction ou instruction md5
    Donc la valeur MD5 que tu as à insérer en BDD est une chaîne de 32 caractères.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT MD5('une valeur en MD5')
    => 1e26e8bd1873259f741911192d78b9e2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO pointdevente
    VALUES (1,1, '1e26e8bd1873259f741911192d78b9e2')
    Tout simplement !

    Mais là j'ai besoin d'intégrer 150 lignes d'un coup.
    Soit tu as une boucle dans ton code qui génère la requête avec les 150 insertions, soit ton code génère un fichier texte délimité et ensuite tu utilises LOAD DATA INFILE.
    De plus, comment assurer l'unicité de la valeur md5 par rapport à celles déjà présentes dans la table de réception.
    Tu mets un index UNIQUE sur la colonne MD5 et tout doublon sera refusé par MySQL.
    Avec INSERT IGNORE, tu évites le message d'erreur et l'arrêt des insertions.
    Citation Envoyé par Doc MySQL
    Si on spécifie le mot IGNORE dans un INSERT avec les valeurs de plusieurs lignes, chaque ligne qui qui ferait doublon avec une clé PRIMARY ou UNIQUE existante dans la table sera ignoré et ne sera pas insérée. Si on ne spécifie pas IGNORE, l'insertion est abandonnée si quelque ligne que ce soit fait doublon avec une clé existante.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre régulier
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2009
    Messages : 131
    Points : 72
    Points
    72
    Par défaut
    Merci beaucoup
    Je vais pouvoir m'en sortir

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

Discussions similaires

  1. LIMIT dans un INSERT INTO
    Par Invité dans le forum Requêtes
    Réponses: 3
    Dernier message: 31/10/2007, 10h31
  2. Valeur Null dans un Insert into
    Par jmde dans le forum VBA Access
    Réponses: 12
    Dernier message: 24/09/2007, 09h46
  3. Réponses: 3
    Dernier message: 24/04/2007, 11h06
  4. probleme dans un INSERT INTO...........SELECT
    Par briiice dans le forum Requêtes
    Réponses: 5
    Dernier message: 26/01/2006, 15h13
  5. Multiplier les And dans Sql Insert Into
    Par samlepiratepaddy dans le forum Requêtes et SQL.
    Réponses: 17
    Dernier message: 23/09/2005, 21h55

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