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 :

Double utilisation impossible d'un résultat execute() [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut Double utilisation impossible d'un résultat execute()
    Bonjour,

    j'ai un problème avec le code ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?php
    $cnx = new PDO($dsn, $DB_USER, $DB_PASS);
     
    $result = $cnx->prepare("SELECT * FROM t_admin WHERE login=:login AND mdp=:mdp");
    $result->execute(
    	array(
    		':login' => $login,
    		':mdp' => $password
    		));
     
    $count = count($result->fetchAll());
    echo("<br />nb : ".$count); // affiche nb : 1
     
    if ($count === 1) {
    	// L'utilisateur est identifié
     
    	$row = $result->fetch(PDO::FETCH_ASSOC);
    	print_r($row);
    }
    ?>
    print_r($row) n'affiche rien à cause de count($result->fetchAll()) car si j'enlève le count($result->fetchAll()), print_r($row) affiche bien les infos de l'admin...
    Je débute avec PDO, une subtilité doit me manquer alors que j'ai lu la doc PHP sur PDO...

    Une idée ?
    Merci d'avance

    @+

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 51
    Points : 50
    Points
    50
    Par défaut
    Enfait le problème est que FetchAll() te récupère l'ensemble du tableau, ensuite fetch() essai de lire la ligne suivante, hors celle-ci n'existe pas puisque tout est déja retourné par FetchAll().

    Si tu essai quelque chose comme ca ca devrait pas être loin de marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    <?php
    $cnx = new PDO($dsn, $DB_USER, $DB_PASS);
     
    $result = $cnx->prepare("SELECT * FROM t_admin WHERE login=:login AND mdp=:mdp");
    $result->execute(
    	array(
    		':login' => $login,
    		':mdp' => $password
    		));
     
    $resultat = $result->fetchAll();
    $count = count($resultat);
     
    echo("<br />nb : ".$count; // affiche nb : 1
     
    if ($count === 1) {
    	// L'utilisateur est identifié
     
    	print_r($resultat[0]);
    }
    ?>

  3. #3
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    je viens de comprendre... nickel !

    merci beaucoup oOSebOo

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/02/2007, 18h02
  2. Réponses: 5
    Dernier message: 30/08/2006, 10h12
  3. [MySQL] Affichage impossible de plusieurs résultats
    Par oceane751 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 21/04/2006, 19h40
  4. double selection impossible
    Par Ghost Dog dans le forum OpenGL
    Réponses: 3
    Dernier message: 12/05/2005, 19h42
  5. Double utilisation de l'interpréteur
    Par Bayard dans le forum Général Python
    Réponses: 4
    Dernier message: 07/11/2004, 11h16

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