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

Langage PHP Discussion :

utiliser la fonction mysql_free_result


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut utiliser la fonction mysql_free_result
    Bonsoir,

    je suis obligé d'utiliser cette fonction car j'ai ça :
    Warning: Unknown: 1 result set(s) not freed. Use mysql_free_result to free result sets which were requested using mysql_query() in Unknown on line 0
    et si je l'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_free_result($res);
    où à la fonction, je passe bien l'identifiant récupéré après la connection, j'ai ce warning :
    Warning: mysql_free_result(): supplied resource is not a valid MySQL result resource in /homepages/20/d357470176/htdocs/telepamedia/annonce1/connect.php on line 26
    que puis-je faire ?

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Hello

    J'imagine que l'erreur est levée car tu manipule des jeux de résultats renvoyés par une procédure je me trompe ? Peux-tu nous montrer la requête que tu execute ? Fais également un var_dump de $res pour contrôler son type et vérifier s'il n'est pas false à tout hasard...

  3. #3
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Je te montre ce qui à mon avis est utile :
    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
    function connect()
    {
    include_once("config.php");
    $id_conn=mysql_connect(MYHOST,MYUSER,MYPASS);
    mysql_select_db(DBNAME,$id_conn);
     
     
    return($id_conn);
    }
     
    function free_memory($res)
    {
    echo 'var_dump : ';
    var_dump($res);
    mysql_free_result($res);
    }
     
    include_once("config.php");
    include_once("connect.php");
    $id_conn = connect();
    ...
    free_memory($id_conn);
    et le retour du var_dump :
    var_dump : resource(4) of type (mysql link)

  4. #4
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Ce n'est pas sur la ressource de connection qu'il faut faire un mysql_free_result mais sur la ressource de résultats renvoyée par mysql_query.

    Logiquement ça donne ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $connection = mysql_connect(...);
    $results = mysql_query("...", $connection);
    mysql_free_result($results);
    mysql_close($connection);
    Les deux derniers appels ne sont pas mandataires, ces fonctions seront appelées nativement lorsque le script se finira de toute façon.

    Lis la doc: http://php.net/manual/fr/function.mysql-free-result.php
    Il est clairement stipulé qu'on doit passer une ressource de résultat à mysql_free_result.

  5. #5
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Merci de ton conseil.
    D'abord, une question : à mysql_query, je ne lui passe que la requête SQL, pas l'identifiant de connection (c'est optionnel) : est-ce OK ?
    Sinon, dans mon script, il y a 3 mysql_query, donc je les libère tous les 3, je n'ai plus l'erreur qui demande de libérer les ressources mais j'avais encore un warning sur l'appel de mysql_free_result. Donc, j'ai mis un @ devant et c'est réglé.
    (Il me disait encore que je passais autre chose qu'une ressource mysql à la fonction...)

  6. #6
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Donc, j'ai mis un @ devant et c'est réglé
    Tu parles Toi tu es du genre à mettre un auto-collant sur le voyant moteur de ta voiture quand il s'allume non ?
    Essaie plutôt de trouver l'origine du probleme, si tu nous faisait voir les requêtes que tu exécutes ?

    Sinon, dans mon script, il y a 3 mysql_query, donc je les libère tous les 3
    Sauf cas particulier (notamment avec les procédure stockées - voir mon premier post dans ce thread) l'usage de mysql_free_result n'est pas nécéssaire.

    D'abord, une question : à mysql_query, je ne lui passe que la requête SQL, pas l'identifiant de connection (c'est optionnel) : est-ce OK ?
    Oui c'est ok tant que tu ne jongle pas avec plusieurs connexions.

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

Discussions similaires

  1. [ASP] Utiliser la fonction PAD
    Par Hell dans le forum ASP
    Réponses: 4
    Dernier message: 31/03/2005, 16h23
  2. manuel d'utilisation de fonction
    Par SteelBox dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 11/10/2004, 01h28
  3. Utiliser des fonctions Pascal
    Par Neilos dans le forum C++Builder
    Réponses: 2
    Dernier message: 07/03/2004, 15h43
  4. Réponses: 11
    Dernier message: 22/12/2003, 21h06
  5. impossible d'utiliser ma fonction dans un insert
    Par caramel dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/04/2003, 15h04

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