JeuWeb - Crée ton jeu par navigateur
[Résolu] Différences entre les mysql_fetch_* - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Différences entre les mysql_fetch_* (/showthread.php?tid=1366)



[Résolu] Différences entre les mysql_fetch_* - Imhotep2 - 26-06-2007

Bonjour,



je viens de lire des tutoriels et j'ai trouvé ces quatre fonctions (mysql_fetch_row / mysql_fetch_array / mysql_fetch_objet / mysql_fetch_assoc() ) permettant de lire le contenu des tables. J'aurais aimé savoir quelles étaient les différences entre ces fonctions, et dans quel(s) cas il est préférable d'utiliser une fonction plutôt qu'une autre.

Merci d'avance.

Imhotep2


RE: mysql_fetch_row / mysql_fetch_array / mysql_fetch_objet / mysql_fetch_assoc() - nemesis_elite - 26-06-2007

Voilà pour toi :
mysql_fetch_row
mysql_fetch_array
mysql_fetch_object
mysql_fetch_assoc

Pense toujours à regarder dans le manuel php


RE: Problème fonctions mysql_fetch - Nessper - 26-06-2007

En fait c'est la forme du résultat qui va changer.
vu qu'un petit exemple vaut mieux qu'un grand discours, voilà pour toi :
Imaginons une table joueurs avec 3 champs : login, mdp, mail.
Je m'enregistre : Nessper, azerty, nessper@refr.fr
Code PHP :
<?php 
$sql
= "SELECT * FROM joueurs WHERE login='Nessper'";
$req = mysql_query($req);

$row = mysql_fetch_row($req);
//$row[0] = Nessper $row[1] = azerty $row[2] = nessper@refr.fr

$row = mysql_fetch_assoc($req);
//$row['login'] = Nessper $row['mdp'] = azerty $row['mail'] = nessper@refr.fr

$row = mysql_fetch_array($req);
//$row['login'] = $row[0] = Nessper $row['mdp'] = $row[1] = azerty $row['mail'] = $row[2] = nessper@refr.fr

En gros row ressort le résultat avec des chiffres, assoc avec le nom des champs et array combine les 2.

pour ce qui est de mysql_fetch_objet je ne l'ai jamais utilisé.


RE: Problème fonctions mysql_fetch - Findel - 27-06-2007

En rapidité d'execution : fetch_row est la plus rapide, vient ensuite fetch_assoc, puis fetch_array, puis beaucoup plus lente fetch_object (on parle en ms)

Dans la plupart des cas, je te conseille fetch_assoc qui te permettra de faire un code assez clair tout en etant rapide. Seule exception : Quand tu ne ramène qu'une seule colonne, alors utilise plutot fetch_row.

Fetch_array est plus lente et plus consommatrice de mémoire, puisqu'elle double les index (numérique + texte).

Fetch_object est une horreur de lenteur, pour aucun bénéfice


RE: Problème fonctions mysql_fetch - pascal - 27-06-2007

je conseille mysql_fetch_assoc pour la lisibilité :

on est des humains, pas des machines, et on comprend plus facilement joueur_id, nom, prenom que les numeros de colonnes 0, 1, 2 avec une correspondance à effectuer.

de plus, utiliser les numeros de colonnes est source d'erreur :
si on modifie les requêtes - en particulier l'ordre des données renvoyées, il faut modifier le code qui suit, ce qui peut introduire des bugs si on fait pas gaffe.

A+

Pascal


RE: Problème fonctions mysql_fetch - Nessper - 27-06-2007

pour ma part j'utilise tout le temps fetch_row et j'ai pas de problemes de comréhensions, je pense que c'est une habitude à prendre


RE: Problème fonctions mysql_fetch - Imhotep2 - 27-06-2007

Oki, merci à tous pour vos réponses, cela a bien éclairé ma lanterne. On comprend bien quand tout est expliqué de manière simple.