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

MySQL Discussion :

Insert ou Update probleme avec on duplicate key


Sujet :

MySQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 228
    Points : 101
    Points
    101
    Par défaut Insert ou Update probleme avec on duplicate key
    Bonjour a tous,

    J'ai une requête html simple de remplissage de table avec un formulaire.

    Je me sert d'un formulaire pour remplir ma table et j'ai fait en sorte que lorsque des donnée on déjà été indiqué dans le formulaire qu'elle reaparaise dans les value="" de mes champs de formulaire.

    J'aimerai faire en sorte que si on modifie un de ces champs preremplis que cela fasse un UPDATE et que si le champs etai vide que cela fasse un INSERT.

    Je pense que on duplicate key peux répondre a mes attentes mais cela ne semble pas fonctionner.

    Voici ma requête a l'heure actuelle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    mysql_query("INSERT INTO fiches_membres (genre, nom, prenom, texte_travail, id_membre) 
    		VALUES('$genre','$nom','$prenom','$texte_travail', '$id')") or die (mysql_error());
    Merci par avance pour le coup de main

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 228
    Points : 101
    Points
    101
    Par défaut
    Voila ce que je viens de tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    mysql_query("INSERT INTO fiches_membres (genre, nom, prenom, texte_travail, id_membre) VALUES
    ('$genre','$nom','$prenom','$texte_travail','$id') ON DUPLICATE KEY UPDATE id_membre='$id'") or die (mysql_error());
    J'aimerai que tout mes champs genre, nom, prenom, texte_travail soit éditable si il sont préremplis grâce a Update ou si il sont vide que le Insert entre en jeu.

    Je pense ne pas avoir compris comment utiliser ON DUPLICATE KEY.
    Dans ma table fiches_membres j'ai passer id_membre en "unique"

  3. #3
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    En effet.

    il faut faire plutot quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO table blablabla ( "primary", "column2", "column3" ) VALUES ( :1, :2, :3 ) ON DUPLICATE KEY  column2 = :2, column3 = :3;
    puisque c'est le conflit sur la clé primaire qui va déclencher l'évènement "ON DUPLICATE".

    SI c'est vraiment un id ton autoincrement tu peux vouloir poser un ID muet dans la requête et mettre une contrainte d'unicité sur une autre colonne (ex login) que l'id. ça marche aussi, par contre je ne crois pas qu'il est possible de savoir quelle contrainte déclenche l'évènement.

    Autre chose, ce genre de fonctionnalité est sympa mais il faut faire attention parce que mal utilisé ça peut conduire à changer le password du voisin

    secrets: idlogin(1er), login (U), password
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO secrets ( login, password ) VALUES (:newlogin, :newpass ) ON DUPLICATE KEY UPDATE  login = :newlogin , password = :newpass ;
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

Discussions similaires

  1. PB de doublons avec ON DUPLICATE KEY UPDATE
    Par Seeker35 dans le forum Requêtes
    Réponses: 6
    Dernier message: 16/05/2011, 16h47
  2. INSERT multiple avec ON DUPLICATE KEY différents
    Par zebulon90 dans le forum Requêtes
    Réponses: 2
    Dernier message: 30/09/2010, 16h09
  3. probleme avec le DUPLICATE
    Par grome dans le forum Administration
    Réponses: 4
    Dernier message: 13/01/2009, 17h32
  4. Réponses: 1
    Dernier message: 19/07/2007, 15h53
  5. [Irrlicht] Probleme avec event.KeyInput.Key
    Par samiblide dans le forum Irrlicht
    Réponses: 1
    Dernier message: 09/07/2007, 02h46

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