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

 C Discussion :

Conserver une variable (mysql.h / mysql_free_result)


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 22
    Points : 12
    Points
    12
    Par défaut Conserver une variable (mysql.h / mysql_free_result)
    Bonsoir,

    Je suis en train de développer une application qui nécessite le stockage de variables depuis une requête MySQL.

    Voici un extrait de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
          [snip]...[/snip]
     
          /* Utilisation du résultat de la requête SQL */
          MySQL_Res = mysql_use_result(MySQL_Link);
     
          /* Définition de mes dimensions de tableau */
          int MAXDOMLEN  = 512;
          int NUMDOMAINS = (int)mysql_num_rows(MySQL_Res);
     
          /* Création de mon tableau avec les dimensions définies */
          char newDomains[NUMDOMAINS][MAXDOMLEN];
     
          /* Remplissage du tableau avec les résultats de ma requête MySQL */
          int j = 0;
          while (MySQL_Row = mysql_fetch_row(MySQL_Res)) {
            strcpy(newDomains[j], MySQL_Row[0]);
            j++;
          }
     
          /* Test : Affichage du nombre de lignes dans le tableau avant le Free */
          printf("%d\n", NUMDOMAINS);
     
          /* Libération des résultats MySQL */
          mysql_free_result(MySQL_Res);
     
          /* Test : Affichage du nombre de lignes dans le tableau après le Free */
          printf("%d\n", NUMDOMAINS);
    Ce qui donne :

    12 étant le nombre d'enregistrements présents dans ma base de données et devant être conservé dans la variable NUMDOMAINS.

    Mon souci étant qu'après avoir exécuté un mysql_free_result, la variable NUMDOMAINS retourne à son état "0" et ne conserve pas le résultat du mysql_num_rows...

    Y a t il une astuce pour contourner ceci ?

    Merci par avance pour votre aide.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Je confirme que je galère encore aujourd'hui sur ce problème.

    Quelqu'un a t il une idée ?

  3. #3
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Je pense qu'il y a un problème sans doute au niveau du tableau à cause d'un retour incorrect de mysql_num_rows suite à l'utilisation de mysql_use_result au lieu de mysql_store_result.

    Voir : mysql_use_result dont voici un extrait :
    ...
    Vous ne devez pas utiliser mysql_data_seek() , mysql_row_seek() , mysql_row_tell() , mysql_num_rows() , ou mysql_affected_rows() avec un résultat retourné par mysql_use_result() , de même, vous ne devez pas exécuter d'autres requêtes tant que la commande mysql_use_result() n'est pas terminée. (Toutefois, après avoir récupéré toutes les lignes, mysql_num_rows() retournera correctement le nombre de lignes récupérées.)
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Ah ? Je vais voir ça tout de suite

    Merci en tout cas, je reviendrais pour confirmer si ça a marché.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Eh bien, merci beaucoup pour tout Ca marche nickel...

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/09/2007, 12h47
  2. Comment modifier la valeur d'une variable Mysql.
    Par pcsystemd dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 19/09/2007, 08h22
  3. [VBA-E] Conserver une variable pour plusieurs modules
    Par pilote301152 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/05/2006, 13h14
  4. Renommer une variable Mysql en javascript
    Par nono3000 dans le forum Requêtes
    Réponses: 8
    Dernier message: 17/12/2005, 16h42
  5. Formulaire Login/mot de passe - Conserver une variable
    Par GraphiKa dans le forum Access
    Réponses: 3
    Dernier message: 30/09/2005, 15h29

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