Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/07/2011, 23h03   #1
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Par défaut utiliser la fonction mysql_free_result

Bonsoir,

je suis obligé d'utiliser cette fonction car j'ai ça :
Citation:
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 :
mysql_free_result($res);
où à la fonction, je passe bien l'identifiant récupéré après la connection, j'ai ce warning :
Citation:
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 ?
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 23h52   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
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...
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 00h22   #3
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Je te montre ce qui à mon avis est utile :
Code :
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 :
Citation:
var_dump : resource(4) of type (mysql link)
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 01h16   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
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 :
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.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 02h17   #5
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
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...)
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 02h32   #6
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Citation:
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 ?

Citation:
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.

Citation:
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.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 02h37   #7
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
t'as cette erreur parce que t'as le trace_mode d'activé, le @ est une mauvaise solution tu préfères supprimer l'erreur plutôt que la corrigé, un petit tour rapide sur la doc de la fonction mysql_free_result et t'aurai compris le pourquoi du comment.
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 06h27   #8
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
en effet ; j'ai désactivé le trace mode, retiré le @ et laissé le mysql_free_result uniquement quand il le fallait et ça marche nickel. Bon je me recouche car je n'ai que 4 heures de sommeil
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 13h32   #9
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
J'ai fait une petite modif sue la page, donc l'ai retransférée, et j'ai de nouveau le warning (et je ne libère que le "select", pas le "insert", ni le "update") ; donc la seule solution pour l'instant est de mettre un @ devant la fonction : comment puis-je faire mieux ?
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 13h56   #10
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
met le mysql_free_result a chaque fois qu'il te dit d'en mettre un
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 14h18   #11
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Comme il n'en restait qu'un, je viens de le retirer (ainsi aue le @) et pour l'instant, plus de warning ni d'erreur...
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h18.


 
 
 
 
Partenaires

Hébergement Web