Aller au contenu

Sujets conseillés

Posté

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

Posté (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é par WewEB
Posté

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 :)

++

Posté

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".

Posté

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 ;)

Posté

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?

Posté
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 ;)

  • 1 year later...
Posté

Bonjour à tous,

le sujet date un peu mais il m'interresse :blush:

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 :thumbsup:

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...