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 :

Pdo fetch et count [PDO]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Par défaut Pdo fetch et count
    Bonjour,
    Je cherche a faire une page de login et plutôt que d'en choisir une toute faite j'essaye de faire la mienne pour pouvoir comprendre, hors, je rencontre un problème.

    Lors de ma récupération de données, même si la requete ne donne devrait rien retourner, elle me retourne des champs vides.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
          $requete = $db->prepare('SELECT * FROM utilisateurs WHERE email_utilisateur= ? AND mdp_utilisateur = ?');
          $requete->setFetchMode(PDO::FETCH_ASSOC);
          $requete->execute(array($user, $pass));
          if(count($requete)>0){
            $info_user = $requete->fetch();
            $requete->closeCursor();//on ferme la requete
    Le test de if(count.... ne fonctionne pas car il rentre toujours dans la boucle étant donné que le count renvoie toujours 1 ou plus.

    Je n'arrive pas à comprendre. Aussi, j'ai testé avec "sizeof()".

    Quelqu'un pourrait-il m'éclairer s'il vous plait?

    Cordialement,

  2. #2
    Membre chevronné Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Par défaut
    J'ai trouvé une solution en changeant mes test

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
          $info_user = $requete->fetch();
          if($info_user['id_utilisateur']===NULL){
    echo 'pas bon';
    }else{
    echo 'bon';
    }
    Mais il y a-t-il une solution plus "propre" ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Plusieurs possibilités te sont offertes, en voici quelques exemples :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $requete = $pdo->prepare('.....');
    $requete->execute();
    if ( ($infos = $requete->fetch() ) !== false)
    {
      // Ok
    }
    else
    {
      // Pas ok
    }}
    ou ( si tu n'as pas besoin de récupérer les informations )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $requete = $pdo->prepare('SELECT COUNT(*) FROM utilisateurs WHERE email_utilisateur= ? AND mdp_utilisateur = ?');
    $requete->execute(array($user, $pass));
    $nb_res = $requete->fetchColumn();
    if ($nb_res == 1) // ok
    else // pas ok

    --------

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $requete->execute(array($user, $pass));
          if(count($requete)>0){
    Cette partie n'aurait pas pu fonctionner $requete est un objet qui prépare la requête, et non un tableau de résultat.
    Si tu veux récupérer tous les enregistrements qui résultent d'une requête, tu peux utiliser fetchAll() et faire un count() dessus, mais dans ce cas là ce n'est pas du tout optimisé.

  4. #4
    Membre chevronné Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Par défaut
    Super, merci pour ces précisions. Je comprends maintenant

    Résolu =D

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

Discussions similaires

  1. probléme avec PDO fetch
    Par ryodo dans le forum Langage
    Réponses: 9
    Dernier message: 26/04/2011, 15h27
  2. [MySQL] Fatal error: PDO fetch() avec DATE_FORMAT
    Par marcuzzz dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 28/09/2010, 16h22
  3. [PDO] Erreur PDO : Call to a member function fetch() on a non-object
    Par numerodix dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 01/03/2010, 17h37
  4. [PDO] PDO OCI et fetch
    Par maxidoudou dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 11/08/2008, 14h56
  5. fetch array vs count ou autre
    Par wormzoom dans le forum Langage
    Réponses: 10
    Dernier message: 17/07/2008, 22h51

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