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

PHP & Base de données Discussion :

Petite reflection entre fetch_row et fetch_array


Sujet :

PHP & Base de données

  1. #1
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 039
    Points
    6 039
    Par défaut Petite reflection entre fetch_row et fetch_array
    Je préviens que ce post n'a pas pour but de dire qu'il est préférable d'utiliser telle fonction plutôt qu'une autre. C'est juste une reflection.

    Je me suis prété à un petit calcule de mémoire théoriquement utilisé lors de l'utilisation entre un xxx_fetch_array et xxx_fetch_row.
    Sur l'exemple d'un forum. Nous considérons qu'il ait 30 messages par page d'un sujet et que la quantité de mémoire moyenne utilisé pour stocké les information (titre,message,date,...) est de 10 kilos octets. Entre les "invités" et les inscrits
    nous concidéront qu'au total 1000 personnes consultent cette page par jour. Calcule :
    (10 ko x 1000 personnes x 365jours) = 3650000/1024 = 3564,453125 mo soit ~3,5 go sur une année pour une seul page . Ceci, c'est si vous utilisez xxx_fetch_row mais si c'est xxx_fetch_array vous pouvez multiplier ce chiffre par deux ~7go.
    En effet le fetch_array stock un numéro d'indice du champs et une autre dimension correspondant au nom du champs sql. Le fetch_row ne stock que l'indice du champs.
    voila
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  2. #2
    Membre régulier
    Avatar de titoon
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 71
    Points : 86
    Points
    86
    Par défaut
    Et du coup, avec fetch_row, t'as un code complétement illisible... Excellente idée !
    mysql_fetch_assoc retourne juste le tableau associatif, c'est un peu mieux non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    echo $truc[5]; // gné ?
    echo $truc['titre']; // affiche le titre de truc

  3. #3
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 039
    Points
    6 039
    Par défaut
    Citation Envoyé par titoon
    Et du coup, avec fetch_row, t'as un code complétement illisible... Excellente idée !
    mysql_fetch_assoc retourne juste le tableau associatif, c'est un peu mieux non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    echo $truc[5]; // gné ?
    echo $truc['titre']; // affiche le titre de truc
    Personnellement je fais.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo $truc[5]; //titre  ?
    Le problème est réglé donc c'est pas un problème.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  4. #4
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 17
    Points : 19
    Points
    19
    Par défaut
    <agite sa pancarte "fan de mysql_fetch_assoc">

    En général, quand j'ai peu de champs retournés, je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list($a, $b, $c) = mysql_fetch_row(...);
    Sinon, mysql_fetch_assoc() est effectivement beaucoup plus lisible dans le code. Quand tu dois utiliser les données pour autrechose qu'un simple echo et qu'en plus, tu utilises plusieurs valeurs différentes sur la même ligne, le commentaire n'est pas satisfaisant à mon sens.

  5. #5
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 039
    Points
    6 039
    Par défaut
    Oui enfin bon mon but n'est pas de savoir quel est la meilleur fonction à utiliser c'est selon ses besoins.
    C'étais juste pour montrer la différence entre deux mêmes fonctions qui peuvent avoir une répercution,certe toute relative, sur des domaines sur lesquel nous pensons pas. S'intéresser sur ce genre de reflexion peut être intéressant sur les test de performance en volume. Juste en changeant une fonction vous pouvez soulager la mémoire du serveur presque de 50% ce qui n'est pas négligeable. Je suppose que si vous faites un petit audit sur des applications et que vous vous pretez à ce jeux là c'est à dire à gonfler le volume sur l'unité vous vous rendez compte qu'il y a des moyens d'optimiser certain élément et que bien souvent cela nous menes à un code plus juste. Ce test est valable lorsque vous tester la rebustesse de votre base sur des centaines de milliers d'enregistrements.
    http://datacharmer.blogspot.com/2006...s-quickly.html
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    hello,

    *_fetch_array est une fonction générique qui est souvent (mal) utilisée par habitude.
    une bonne méthode est de l'utiliser avec la constante de résultat désiré :

    *_NUM -> *_fetch_row()

    *_ASSOC -> *_fetch_assoc()

    *_BOTH (par défaut) -> qui mélange les deux méthodes (pratique pour récuperer les lignes de résultat contenant des doublons... lorsqu'on sait pas qu'on peut utiliser des alias sur les champs retournés...)

    bref c'est une méthode sans grand intéret mais qu'on utilise souvent parce-qu-on-a-appris-comme-ca.

    perso j'ai une petite tendresse pour *_fetch_object.
    pourquoi ?
    parce qu'il est beaucoup moins chiant à l'usage de taper $truc->machin que $truc['machin']... et beaucoup plus lisible que $truc[157]<-oui je sais j'abuse
    Pourfendeur de singletons en croisade

  7. #7
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 039
    Points
    6 039
    Par défaut
    Citation Envoyé par Petibidon
    hello,

    *_fetch_array est une fonction générique qui est souvent (mal) utilisée par habitude.
    une bonne méthode est de l'utiliser avec la constante de résultat désiré :

    *_NUM -> *_fetch_row()

    *_ASSOC -> *_fetch_assoc()

    *_BOTH (par défaut) -> qui mélange les deux méthodes (pratique pour récuperer les lignes de résultat contenant des doublons... lorsqu'on sait pas qu'on peut utiliser des alias sur les champs retournés...)

    bref c'est une méthode sans grand intéret mais qu'on utilise souvent parce-qu-on-a-appris-comme-ca.

    perso j'ai une petite tendresse pour *_fetch_object.
    pourquoi ?
    parce qu'il est beaucoup moins chiant à l'usage de taper $truc->machin que $truc['machin']... et beaucoup plus lisible que $truc[157]<-oui je sais j'abuse
    En y reflechissant, il est vrai que nous gardons des habitudes mais de catégorie "boulet" nous savons que c'est pas terrible mais ...
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

Discussions similaires

  1. petits problème entre IE et FF
    Par MeTaLCaM dans le forum Mise en page CSS
    Réponses: 19
    Dernier message: 23/05/2009, 19h03
  2. [DOM] Petit conflit entre PHP et javascript
    Par sliderman dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/04/2008, 17h05
  3. Petite question entre fenêtres
    Par Goth_sensei dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/03/2006, 22h26
  4. Menu CSS vertical, petit espace entre les images sous IE
    Par Death83 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 24/10/2005, 09h52
  5. Petit écart entre 2 div sous FF
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 14/10/2005, 20h25

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