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

PHP & Base de données Discussion :

DUPLICATE KEY UPDATE !


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Par défaut DUPLICATE KEY UPDATE !
    Bonjour j'ai ma requête sql suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO feraille (datefer, postefer, nbrfer) VALUES ('$dateDuJour', '$poste', '$nbrfer') ON DUPLICATE KEY UPDATE nbrfer='$nbrfer'
    et ma table feraille suivante :
    ******************
    *ID****NOM****NBR*
    ******************
    *1***PIERRE****4***
    *2***PAUL*****5***
    *3***JAQUE****2***

    id est ma clef primaire, et lorsque je fais une modification, si par exemple je modifie le nbr de PIERRE et bien il va crée une nouvelle entrée dans la table avec pour nom PIERRE et un nouvel id !
    je ne vois pas ou est le probléme !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il faut que ton champ "nom" soit UNIQUE pour que le "ON DUPLICATE KEY" agisse.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Par défaut
    donc je dois mettre la clef primaire sur nom et pas id alors ?
    dans le code de la requete que j'ai copié, j'ai "postefer" et "datefer" et id qui est sur clef primaire, dans ce cas la aussi je devrai definir les deux colonne là en clef primaire ???

  4. #4
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    id est ma clef primaire, et lorsque je fais une modification, si par exemple je modifie le nbr de PIERRE et bien il va crée une nouvelle entrée dans la table avec pour nom PIERRE et un nouvel id !
    je ne vois pas ou est le probléme !
    Le code que tu donne INSERT INTO est fait pour créer une nouvelle ligne, un nouvel enregistrement.

    Pour faire une modification, c'est
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE une_table SET champ = 'une_valeur' WHERE ... etc ...

    C'est peut être pour ça que tu remarque que ça crée une ligne, non ?

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Par défaut
    mais je pensez que le "insert into" et le "on "duplicat key" compiler permetté lorsque la valeur n'existe pas de la crée sinon si il le met à jour !

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu dois définir un index UNIQUE sur les champs qui doivent l'être.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    mais je pensez que le "insert into" et le "on "duplicat key" compiler permetté lorsque la valeur n'existe pas de la crée sinon si il le met à jour !
    C'est la façon dont tu procède qui me chiffonne, de la logique.

    Au départ, il y a bien une action, non ?
    Il doit bien avoir une manip de l'utilisateur, c'est à dire, soit une création, soit une modification, il ne devrait pas avoir de hasard ici, non ?

    Si c'est une modification par exemple, et théoriquement, avant même que l'utilisateur valide la modif, il doit bien avoir une donnée (un ID en général) qui va déterminer quelle ligne à modifier.

    Si c'est un nouvelle enregistrement, c'est encore plus évident, car par définition, un nouvel enregistrement veut dire que la ligne n'existe pas.
    Je dirais même qu'en général ici, c'est l'inverse qui se fait, soit vérifier (une requête avant) si part hasard on ne serait pas entrain de créer 2 fois la même donnée.


    Théoriquement, les choses sont connues.
    mais je pensez que le "insert into" et le "on "duplicat key" compiler permetté lorsque la valeur n'existe pas de la crée sinon si il le met à jour !
    Théoriquement oui, mais il me semble que c'est sur la clé primaire, au cas ou celle ci existerait déjà.
    Mais c'est quoi qui te pose problème ?
    Qu'est-ce que tu veux faire et surtout quoi éviter ?
    Pour ma part, si tu as un ID comme clé primaire et en auto_increment, tu ne devrait pas avoir de problème, il y aurait rien à rajouter.
    Ne peux tu pas t'appuyer sur ce que tu as pour soit faire un UPDATE ou un INSERT INTO

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/03/2009, 08h44
  2. INSERT .. ON DUPLICATE KEY UPDATE fait que des INSERT !
    Par umeboshi dans le forum Requêtes
    Réponses: 2
    Dernier message: 30/07/2008, 09h40
  3. Syntaxe ON DUPLICATE KEY UPDATE
    Par JoN28fr dans le forum Requêtes
    Réponses: 7
    Dernier message: 27/02/2008, 09h32
  4. ON DUPLICATE KEY UPDATE et unicité sur 2 colonnes
    Par dja07 dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 07/06/2007, 16h54
  5. INSERT ... ON DUPLICATE KEY UPDATE
    Par luffy san dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 17/10/2005, 17h29

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