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 :

vérification exécution requête [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 145
    Points : 91
    Points
    91
    Par défaut vérification exécution requête
    bonjour,
    j'ai un petit souci de vérification d'exécution de requete.
    je fait un update si je reçois 2 variables en get mais j'aimerai affiché un message si la celle-ci s'est correctement exécutée. comment puis-je m'y prendre merci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function alpha(){
             if (isset($_GET['var1']) && isset($_GET['var2'])) {
               $var1=$_GET['var1'];
               $var2=$_GET['var2'];
     
               $req="UPDATE ma_table SET champ_truc='1' WHERE champ1='$var1' AND champ2='$var2'";
               mysql_query($req);
     
               echo "ok";
             }
             else{
               echo "non";
             }
    }

  2. #2
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut
    C'est si dur que ça d'aller lire la doc ? http://fr.php.net/manual/fr/function.mysql-query.php
    Pour les requêtes du type SELECT, SHOW, DESCRIBE ou EXPLAIN, mysql_query() retournera une ressource en cas de succès, ou FALSE en cas d'erreur.

  3. #3
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 145
    Points : 91
    Points
    91
    Par défaut
    ca me fait marrer parfois de voir à quel point on peut être désagréable sur ces forums d'entre-aide.
    alors pour info je m'étais gardé de dire que j'avais déjà fais des recherches mais je n'aurai peut-être pas dû.
    à chaque fois c'est pareil, quand on veut demander qqch c'est tout juste s'il ne faut pas ajouter son historique au message pour montrer sa bonne foi.

    alors, oui j'ai déjà essayé mais ce n'est pas ce que j'attendais. je n'ai aucune erreur mysql alors que dans ma table je n'ai pas de champ1 qui est égal à $var1 ni de champ2 qui est égal à $var2.

    à force de répondre comme ça on n'a plus envie de participer à vos forums,
    désolé si je suis désagréable à mon tour mais c'est toujours pareil.

    dans ton post tu as citer la partie sur SELECT... alors que j'utilise un UPDATE.


    merci

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    Le problème étant que certaines question récurrentes pourraient être résolues simplement en consultant la doc, et c'est parfois lassant de répéter sans cesse la même chose.
    Bref je ne m'étendrai pas d'avantage.

    Pour te répondre il est parfaitement normal que sql ne renvoie pas d'erreur si tu n'as aucun enregistrement correspondant à ton update. Il va seulement faire un update de 0 lignes, mais renvoyer une erreur dans ce cas précis serait source d'erreur puisqu'il n'y a pas d'erreur de syntaxe.

    Si tu fais un update sur 0 lignes que tu ne devrais pas faire c'est peut être qu'il te manque des contrôles et non que mysql réagit mal

    EDIT : et la réponse était parfaitement plausible puisque pour vérifier qu'une requête s'est correctement exécuté il suffit de récupérer le code retour de mysql_query.

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Dans le cas d'un update, si erreur syntaxique il y a, alors la valeur renvoyée sera FALSE et TRUE dans le cas contraire. Il suffit donc de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if (mysql_query('UPDATE ma_table SET ...')) {
        echo 'Update ok';
    } else {
        echo 'Update a échoué : ' . mysql_error();
    }
     
    # Ou encore
    mysql_query('UPDATE ma_table SET ...') or die('Update a échoué : ' . mysql_error());
    Notons également que la fonction mysql_affected_rows peut vous donner le nombre de tuples affectées par une modification (requêtes update, insert, delete, replace).


    Julp.

  6. #6
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 145
    Points : 91
    Points
    91
    Par défaut
    merci d'avoir répondu,
    pour les sujets lassants je comprends mais à qui ça n'est jamais arrivé de poser une question à laquelle on avait déjà la réponse?le principe d'un forum d'aide c'est bien d'indiquer où chercher, on n'attend pas forcément des réponses toutes faites, et c'est pareil sur tous le forums, ça finit par être agaçant.

    bref passons...
    en fait, il ne me manque pas de contrôle c'est que je veux m'assurer que les variables passées en get n'ont pas été modifiées et que je n'affiche pas un message de validation si la requête ne s'effectue pas.
    pour la réponse, elle était tout à fait plausible, je le sais puisque c'est la première que j'ai essayé

    en tous les cas merci, je vais faire une vérification avec mysql_affected_rows.
    merci

  7. #7
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    Je voudrais juste rappeler qu'il faut se méfier de mysql_affected_rows dans le cas d'un UPDATE si on utilise un moteur innoDB... En effet, si on trouve des enregistrements avec la clause WHERE, mais que l'update ne change rien (id que les anciennes valeures = nouvelles) alors mysql_affected_rows retournera 0.
    Remarquez, je dis qu'il faut se méfier avec INNODB, mais il faut aussi se méfier avec les autres moteurs, tout dépend du comportement attendu.

  8. #8
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut
    Désolé si ma réponse t'a parue sèche, mais je ne peux pas m'empêcher de raller lorsque je vois dans un code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
               $req="UPDATE ma_table SET champ_truc='1' WHERE champ1='$var1' AND champ2='$var2'";
               mysql_query($req);
    C'est pourtant une des bases du développement de vérifier les retours d'erreurs de ses fonctions, et on a assisté maintes fois a des personnes qui ne comprenaient pas pourquoi ça ne fonctionnait pas sans avoir pris le temps de lire dans la doc qu'il fallait toujours vérifier les retours d'erreurs de ses fonctions ...

    Pense donc à toujours vérifier le retour de mysql_query() dans le futur, comme l'a indiqué Julp.

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

Discussions similaires

  1. Réponses: 33
    Dernier message: 06/06/2006, 14h41
  2. Exécution requête SQL + easyphp1.8
    Par Chengj dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/05/2006, 16h39
  3. Réponses: 2
    Dernier message: 04/04/2006, 11h46
  4. erreur exécution requête
    Par MANU_2 dans le forum Bases de données
    Réponses: 4
    Dernier message: 13/10/2005, 07h27
  5. exécuter requête au clic sur valider
    Par rangernoir dans le forum Access
    Réponses: 6
    Dernier message: 09/09/2005, 15h01

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