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 :

Fonction UPDATE dans le cas où il UPDATE rien [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 147
    Par défaut Fonction UPDATE dans le cas où il UPDATE rien
    Bonjour,

    j'aimerai savoir comment on fait pour savoir si en faisant un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE matable SET macolonne=mavaleur WHERE totoID = $valeurID
    , le champs existe bien ?

    Car pour certaines valeurs de $valeurID, le champs macolonne n'existe pas et s'il existe un moyen de savoir ça, je pourrai pas la suite faire un INSERT INTO.


    Merci

    [edit] juste petite précision, en faite là ce qu'il se passe c'est que même si la colonne n'existe pas, il n'y a aucune erreur renvoyé, en faite rien ne se passe.

  2. #2
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Salut, pourquoi ne pas verifier si le champs existe ou pas avant de tenter l'update ou l'insertion ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    IF NOT EXISTS (SELECT macolonne from matable WHERE condition)  
    INSERT...
    else
    UPDATE...

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 147
    Par défaut
    ah merci, je ne connaissais pas IF NOT EXIST.

    je viens de faire un truc similaire d'ailleurs mais plus long

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $req = 'SELECT....'
    $res = mysql_query($req)
    $nb = mysql_num_rows($res)
    if ($nb == 0) // si le champs n'existe pas
    {
           INSERT....
           UPDATE...
    }
    else
    UPDATE

  4. #4
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    L'important c'est que ça marche

    Teste peut être les deux méthodes pour voir laquelle est la plus rapide dans le cas de grandes volumétries.

  5. #5
    Membre éclairé Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Par défaut
    Citation Envoyé par Henry9
    Car pour certaines valeurs de $valeurID, le champs macolonne n'existe pas et s'il existe un moyen de savoir ça, je pourrai pas la suite faire un INSERT INTO.
    Juste une petite correction...
    Je pense que tu fais une confusion entre donnees et structure.
    Le champs "macolonne" existe forcément puisque cela fait parti de ta base de donnees. Je veux dire par la que si tu as cree une base de donnees avec une table "matable" et defini que la structure de ta table etait composee de differents champs dont "macolonne".

    Donc une fois que ta table est cree, ton champs macolonne existe forcement, meme si aucune donnees n'est encore inseree.

    tu dis :

    Citation Envoyé par Henry9
    Juste petite précision, en faite là ce qu'il se passe c'est que même si la colonne n'existe pas, il n'y a aucune erreur renvoyé, en faite rien ne se passe.
    Oui et c'est normal qu'il n'y est pas d'erreur. Explication :

    t'as requete update est la suivante :
    Update `matable` SET `macolonne`='tata' WHERE `macolonne`='toto'
    Le moteur de base de donnees va essayer de trouver les enregistrements dont la valeur qui est associee à `macolonne` sont égals à 'toto'.
    une fois qu'il a trouvé les enregistrements, il va modifier cette valeur en la remplacant par 'tata'.

    Cependant dans ton cas il ne trouve pas d'enregistrement avec la valeur specifie donc du coup il ne modifi rien, mais ce n'est pas pour autant qu'il y a une erreur. C'est juste qu'il n'a trouvé aucune correspondance.

    Voila je voulais juste expliquer un peu le principe, en esperant que tu comprends mieux...

    Bonne continuation

  6. #6
    Membre chevronné Avatar de Asmodean
    Profil pro
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Par défaut
    Citation Envoyé par max44410
    Le moteur de base de donnees va essayer de trouver les enregistrements dont la valeur qui est associee à `macolonne` sont égals à 'toto'.
    une fois qu'il a trouvé les enregistrements, il va modifier cette valeur en la remplacant par 'tata'.

    Cependant dans ton cas il ne trouve pas d'enregistrement avec la valeur specifie donc du coup il ne modifi rien, mais ce n'est pas pour autant qu'il y a une erreur. C'est juste qu'il n'a trouvé aucune correspondance.
    MySQL va même plus loin (j'ai un un probleme similaire je voulais savoir si ma ligne avait bien ete update grace à la fonction phph affected_row).

    Si la requete est de la forme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Update `matable` SET `macolonne1`='tata' WHERE `macolonne2`=32
    Si mysql trouve un enregistrement avec macolonne2==32, mais que macolonne1 vaut déjà tata alors il n'update pas, donc affected_row reste à 0.

  7. #7
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 147
    Par défaut
    @max44410

    oui tout à fait, je m'étais mal exprimé, il fallait que je parle d'enregistrement et non de champs

    merci pour ta correction

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 10/01/2007, 10h12
  2. problème d'update dans une fonction trigger (before)
    Par ctobini dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 08/09/2006, 17h08
  3. [Pl/Sql] Insert ou Update dans une fonction
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 12
    Dernier message: 18/04/2006, 15h28
  4. Fonction UPDATE dans un ADOQuery - SQL
    Par yanba dans le forum Bases de données
    Réponses: 1
    Dernier message: 18/03/2006, 13h53
  5. [Requête] Fonction UPPER dans un update
    Par WriteLN dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/10/2005, 13h54

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