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 :

prepare() et fetchall produisent des tableaux un peu trop complexes [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de php_de_travers
    Inscrit en
    Juin 2004
    Messages
    460
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 460
    Par défaut prepare() et fetchall produisent des tableaux un peu trop complexes
    Bonjour,

    dans le tuto de Yogui
    http://php.developpez.com/faq/?page=pdo#pdo-query

    on crée une requête sql, on la prepare() puis on l'execute().
    Mais au final, le tout est soigneusement emballé dans des tableaux emboîtés.
    Ce "sur-emballage" est-il systématique ?
    Si non, comme créer des tableaux moins emboîtés ?
    Si oui, comment aller chercher les infos ?

    PDO, ça me fait un peu penser à l'Everest.
    Faut pas l'attaquer sa préparation.

    Question subsidiaire : où lire un ouvrage du type "PDO pour les nuls"

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Que veux-tu dire exactement sur l'imbriquement ?

    Le tableau de prepare() c'est argument=>valeur
    Le retour de fetchall() c'est clef=>valeurs
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé Avatar de php_de_travers
    Inscrit en
    Juin 2004
    Messages
    460
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 460
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Que veux-tu dire exactement sur l'imbriquement ?

    Le tableau de prepare() c'est argument=>valeur
    Le retour de fetchall() c'est clef=>valeurs
    On a affaire à 2 types de tableaux, semble-t-il.
    Existe-t-il une façon simple simple de lire les tableaux générés par prepare() et par fetchall() ?
    Je manque cruellement d'information sur PDO.

    Edit 1 : ne vaudrait-il mieux pas passer par fetch(PDO::FETCH_OBJ) pour récupérer une seule ligne et plus facilement ?

    Edit 2 : FONCTIONNE COMME JE SOUHAITE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sth->execute(array( $toto ));
    				$lignes=$sth->fetch(PDO::FETCH_OBJ);
    				echo $lignes->nomdemonchamp.'<br />';

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pour lire le retour de fetchall un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach($tableau as $liste_colonnes)
    Pour prepare je ne vois pas de quoi tu parles puisqu'il ne retourne pas un tableau.

    Si tu veut recuperer ligne par ligne, tu peux faire un simple ->fetch()
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé Avatar de php_de_travers
    Inscrit en
    Juin 2004
    Messages
    460
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 460
    Par défaut
    Merci sabotage,

    j'arrive à présent à faire fonctionner mon script avec fetch(PDO::FETCH_OBJ);
    Pas avec fetch() vide.

    PS : PDO c'est très puissant, mais c'est vraiment opaque quand on improvise. Pourtant, je ne cherche pas à faire des miracles avec : select, insert, update. C'est tout.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Peut etre pourrais-tu nous detailler ce qui te pose probleme.
    PDO c'est au contraire très semblable dans le principe aux anciennes extension mysql_ mssql_ etc.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre éclairé Avatar de php_de_travers
    Inscrit en
    Juin 2004
    Messages
    460
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 460
    Par défaut
    On sort du sujet initial de la discussion.
    Je te remercie tout d'abord pour l'aide que tu m'as apportée.
    Mon problème reste d'acquérir une vision plus globale de PDO en allant du simple au plus complexe.
    Il est dommage de ne pas trouver de tutos dans lesquels il est possible de prendre connaissance des 3-4 procédures utilisée à 95% par les développeurs : select, insert, update, delete + sécurisation des requêtes.

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    3-4 procédures utilisée à 95% par les développeurs : select, insert, update, delete + sécurisation des requêtes.
    Le type de requete importe peu finalement.
    La seule spécificité avec PDO est l'utilisation de requetes préparées qui est expliquée dans l'article que tu as cité.
    La doc PHP egalement fournie des exemples très directs de differentes ecritures possibles.

    Le ->fetch(PDO::FETCH_ASSOC) de PDO c'est exactement la meme chose que le **sql_fetch_assoc des anciennes bibliotheques.

    Apres on trouve des modes de récupération supplémentaire comme le fetchAll() mais ca releve de la simple utilisation de tableaux PHP.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre éclairé Avatar de php_de_travers
    Inscrit en
    Juin 2004
    Messages
    460
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 460
    Par défaut
    Je viens de me constituer quelques modèles pour les 4 opérations les plus courantes : ça marche nickel et l'exécution des requêtes est ultra rapide.

    Existe-t-il une astuce pour débugger facilement avec PDO ?
    Voir le sql généré ? savoir si la requête a fonctionné ?

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il y a un sujet quelque part sur le forum qui expliquait comme modifier PDO pour afficher la requete preparée mais ce n'est pas simple.

    Pour les erreurs ou les succès c'est le meme principe qu'avant :
    execute() retourne TRUE ou FALSE.
    PDOStatement->errorCode() te permet egalement de savoir si ta requete s'est deroulée ou non.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre éclairé Avatar de php_de_travers
    Inscrit en
    Juin 2004
    Messages
    460
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 460
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Pour les erreurs ou les succès c'est le meme principe qu'avant :
    execute() retourne TRUE ou FALSE.
    Comment récupères-tu TRUE ou FALSE après un execute() ?

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat = $statement->execute($params);
    $resultat vaudra TRUE ou FALSE.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre éclairé Avatar de php_de_travers
    Inscrit en
    Juin 2004
    Messages
    460
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 460
    Par défaut
    Merci pour cette astuce.

    PS : compte-tenu de la petite quantité d'infos pratiques (pas théoriques) disponibles sur PDO, t'as pas peur de passer ton temps à répondre à des questions basiques de cet ordre là ?

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Non, comme je t'ai dit, je trouve que pdo fonctionne tout a fait comme mysql_
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. J’ai des interfaces un peu trop « tartes »
    Par bvsud dans le forum Débuter
    Réponses: 15
    Dernier message: 14/04/2015, 21h11
  2. UPDATE/SELECT un peu trop complexe pour moi
    Par Yateri dans le forum Langage SQL
    Réponses: 5
    Dernier message: 13/08/2010, 16h17
  3. [Debutant][Un peu perdue] Des tableaux, des feuilles..
    Par coco21 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/07/2007, 09h38
  4. Réponses: 2
    Dernier message: 19/08/2003, 19h04
  5. free sur des tableaux "a moitié dynamiques"
    Par barthelv dans le forum C
    Réponses: 4
    Dernier message: 31/07/2003, 16h30

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