Boumbadaboum Posté 28 Juillet 2005 Posté 28 Juillet 2005 Bonjour, Voila je suis en train de (re)faire mon premier site dynamique avec bdd. Donc dans ce site je me connecte plusieurs fois à la base, pour différentes opérations (recherche par mots clefs, afficher des noms de champs, leurs contenus etc...). A chaque fois que je me connecte j'utilise la formule (classique) suivante: $req ="SELECT truc FROM etc..."$req2= mysql QUERY ("$re2") etc... Jusque la c'est banal. Mais à chaque fois que j'effectue une nouvelle requete je change les variables, par exemple au lieu d'utiliser $req comme ci dessus, j'utilise $reqLibelle pour la requete qui récupère les libellés, et à la place de $req2 je met par exemple $reqLibelle2 etc... Est-ce vraiment utile ou totalement inutile? 2) après chaque récupération de données depuis la base j'utilise mysql_free_result, mais puis-je utiliser les valeurs de mes variables ainsi récupérées ailleur dans la page où sont-elles effacées après le mysql_free_result? Bref, c'est un peu la purée, si vous avez quelques conseils méthodologiques ça me fera pas de mal. Merci d'avance
WewEB Posté 28 Juillet 2005 Posté 28 Juillet 2005 (modifié) 1) Rien d'obligatoire à changer le nom de tes variables, mais si tu n'as plus besoin du contenu des premières, autant les réutiliser... D'ailleurs, tu n'es peut-être pas obligé d'en utiliser autant. $req ="SELECT truc FROM etc..."$req2= mysql QUERY ("$re2") Peut très bien s'écrire: $rs = mysql_query("SELECT truc FROM ..."); Et pour ta requête suivante, tu peux très bien réutiliser $rs (si tu n'as plus besoin de son contenu). Je ne crois pas que ce soit le fait de créer une ou deux variables en trop qui mette à mal ton hébergeur, tu peux donc te permettre de faire comme tu veux de ce point de vue là (mais je préfère personnellement ne pas créer de variable intermédiaire pour y stocker ma requête SQL). Modifié 28 Juillet 2005 par WewEB
Boumbadaboum Posté 28 Juillet 2005 Auteur Posté 28 Juillet 2005 Ok merci, tu as élargi mon champ de conscience En fait j'ai pas d'autres question là lol Rajoutez en une couche si vous voulez, ça viendra peut être
Portekoi Posté 28 Juillet 2005 Posté 28 Juillet 2005 Juste pour info : Moi je fais comme ceci : $sql = "select * from matable"; $requet = mysql_query($sql) or die (mysql_error()); Pourquoi séparer le '$sql'? Tout simplement pour l'afficher plus facilement en cas de problème Et le mysql_error() mis comme cela arrêtera ton script et t'indiquera le type d'erreur rencontée ++
Cariboo Posté 28 Juillet 2005 Posté 28 Juillet 2005 Il est d'usage de faire comme l'indique portekoi, pour les raisons qu'indique portekoi Aussi parfois parce que la requete est calculée, ou varie selon le contexte... Mais à chaque fois que j'effectue une nouvelle requete je change les variables, par exemple au lieu d'utiliser $req comme ci dessus, j'utilise $reqLibelle pour la requete qui récupère les libellés, et à la place de $req2 je met par exemple $reqLibelle2 etc...Est-ce vraiment utile ou totalement inutile? C'est souvent inutile, mais ce n'est pas une mauvaise idée, car quand on commence à avoir des programmes touffus, on provoque parfois des bogues assez difficile à corriger en écrasant les variables... Ceci dit, à l'inverse, sauf à avoir des nommages bien clair et cohérents, on provoque souvent d'autres erreurs en "oubliant" que la variable que l'on appelle $resultat s'appelle $resultat1 et que c'est pour cela que mysql_fetch_array($resultat) renvoie une erreur C'est pour cela que chacun à ses petits trucs et que chaque programmeur finit par avoir son "style".
Boo2M0rs0 Posté 28 Juillet 2005 Posté 28 Juillet 2005 De toute façon, écrire par dessus une ancienne valeur d'un mysql_query ne libère pas la ressource. Il faut utiliser mysql_free_result si on veut vraiment libérer la place occupée
Boumbadaboum Posté 28 Juillet 2005 Auteur Posté 28 Juillet 2005 Merci pour vos réponse. Pourquoi séparer le '$sql'? Tout simplement pour l'afficher plus facilement en cas de problème Et le mysql_error() mis comme cela arrêtera ton script et t'indiquera le type d'erreur rencontée En fait dans mon script j'utilise aussi le mysql_error, je l'avais pas précisé. Donc c'est mieux que la soluce de WewEB ? et sinon pour l'autre question, une fois que j'ai récupéré mes données j'efface tout avec mysql_free_result (on m'a dit de le faire j'ai pas encore compris pk à 100%). Mais même après le mysql_free_result les valeurs récupérées existent encore alors?
Didier_S Posté 31 Juillet 2005 Posté 31 Juillet 2005 En fait dans mon script j'utilise aussi le mysql_error, je l'avais pas précisé. A éviter lorsque tu passes en production, les erreurs MySQL pouvant être une bonne aide pour quelqu'un qui voudrait "faire du mal" à ton site. Mais même après le mysql_free_result les valeurs récupérées existent encore alors? Si tu les stockes dans des variables classiques, oui : $SQL = "SELECT * FROM ..."; $REQ = mysql_query($SQL); $DATA = mysql_fetch_assoc($REQ); mysql_free_result($REQ); le free_result efface bien $REQ, mais pas $DATA
elidris Posté 29 Décembre 2006 Posté 29 Décembre 2006 Bonjour à tous, le sujet date un peu mais il m'interresse est-ce que cela optimise vraiment le site d'ajouter la fonction mysql_free_result() ? est-ce que cela ne fait pas encore plus travailler le serveur vu qu'il doit effacer ? dans un soucis d'optimisation merci pour vos réponses
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant