Précédent   Forum des professionnels en informatique > 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 Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/11/2007, 20h59   #1
Membre habitué
 
Inscription : octobre 2005
Messages : 641
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 641
Points : 143
Points : 143
Par défaut Double utilisation impossible d'un résultat execute()

Bonjour,

j'ai un problème avec le code ci-dessous :
Code :
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

@+
Tchupacabra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2007, 22h46   #2
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 51
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 51
Points : 39
Points : 39
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 :
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]);
}
?>
oOSebOo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2007, 09h30   #3
Membre habitué
 
Inscription : octobre 2005
Messages : 641
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 641
Points : 143
Points : 143
je viens de comprendre... nickel !

merci beaucoup oOSebOo
Tchupacabra est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h31.


 
 
 
 
Partenaires

Hébergement Web