Précédent   Forum du club des développeurs et IT Pro > PHP > PHP & SGBD > PDO
PDO Forum d'entraide sur PDO (PHP Data Objects) : pilote générique de bases de données avec PHP. Avant de poster -> FAQ PDO et Cours PDO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 13/11/2012, 17h18   #1
Zanarkand
Invité de passage
 
Inscription : juin 2012
Messages : 14
Détails du profil
Informations forums :
Inscription : juin 2012
Messages : 14
Points : 3
Points : 3
Par défaut Récupérer le résultat d'un COUNT avec PDO

Bonjour à tous,

Je souhaite lors de l'inscription d'un membre vérifier si le pseudo est déjà utilisé ou non. Je lance donc la requête suivante :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
 
/* TEST DE DISPONIBILITE DE L'IDENTIFIANT */
try{
     $bdd = new PDO('mysql:host=localhost;dbname=share_db', 'root', '');
}
catch (Exception $e)
{ 
	die('Erreur : '. $e->getMessage());
}
 
$req = $bdd->prepare('SELECT COUNT(id) as nombre FROM user_account WHERE id=:pseudo;') or die(print_r($bdd->errorInfo())) ;
$req->execute( array('pseudo'=>$pseudo) );
Ma question est de savoir comment utiliser le résultat de cette requête ? Je souhaiterais écrire par la suite une condition du genre => "Si 0 alors : pseudo disponible"

Pour le moment ma table 'user_account' ne contient aucune entrée donc ma requête devrait me renvoyer une ligne de résultat contenant la valeur 0.

Je parviens à afficher le nombre de lignes de résultat comme ci-dessous( soit 1) mais pas le contenu ( qui devrait être 0).

Code :
1
2
3
4
 
 
$donnees=$req->fetch();
echo $donnees['nombre'] // "1"
Quelqu'un pourrait-il m'éclairer ??

Merci d'avance
Zanarkand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2012, 17h31   #2
Zanarkand
Invité de passage
 
Inscription : juin 2012
Messages : 14
Détails du profil
Informations forums :
Inscription : juin 2012
Messages : 14
Points : 3
Points : 3
Ah peut-être avec un fetchColumn() ?? Je ne l'ai jamais utilisé mais je viens de voir ça sur une doc.

Je vais essayer cela.
Zanarkand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2012, 17h55   #3
Zanarkand
Invité de passage
 
Inscription : juin 2012
Messages : 14
Détails du profil
Informations forums :
Inscription : juin 2012
Messages : 14
Points : 3
Points : 3
Je suis parvenu à mes fins en écrivant le code suivant après l'exécution de ma requête :

Code :
1
2
3
4
5
6
7
 
$donnees = $req->fetchColumn();
 
if($donnees==0)
{
  // Pseudo dispo
}
je vais continuer les tests et si cela continue de fonctionner je me féliciterai d'avoir résolu ce problème
Zanarkand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2012, 18h01   #4
Zanarkand
Invité de passage
 
Inscription : juin 2012
Messages : 14
Détails du profil
Informations forums :
Inscription : juin 2012
Messages : 14
Points : 3
Points : 3
Cela fonctionne parfaitement.

Félicitations à moi donc
Zanarkand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2012, 18h13   #5
Exia93
Membre Expert
 
Homme
Étudiant
Inscription : avril 2012
Messages : 611
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2012
Messages : 611
Points : 1 069
Points : 1 069
Bonsoir,

plus rapidement :
Code :
1
2
3
4
5
if( $donnee = $req->fetch() ){
    echo 'nom déjà pris';
}else{
    //Suite du traitement car le nom n'est pas dans la table
}
Exia93 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2012, 18h18   #6
Zanarkand
Invité de passage
 
Inscription : juin 2012
Messages : 14
Détails du profil
Informations forums :
Inscription : juin 2012
Messages : 14
Points : 3
Points : 3
Tu es sûr ?? Dans tous les cas $donnee aura une valeur puisque COUNT renvoie toujours une ligne donc il passera le if à chaque fois non ??

Si $donnee pouvait être NULL cela aurait fonctionné par contre.
Zanarkand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2012, 20h24   #7
Exia93
Membre Expert
 
Homme
Étudiant
Inscription : avril 2012
Messages : 611
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2012
Messages : 611
Points : 1 069
Points : 1 069
Non si ta requête ne renvoi aucun résultat le fetch() renvoi false, essai tu verra que ça fonctionne
Exia93 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 10h38.


 
 
 
 
Partenaires

Hébergement Web