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 26/01/2008, 15h21   #1
Membre confirmé
 
Inscription : décembre 2006
Messages : 297
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 297
Points : 248
Points : 248
Par défaut Compter le nombre de lignes d'une requête SELECT

C'est déjà traité là => Compter le nombre de lignes d'une requête SELECT

Citation:
Envoyé par http://be2.php.net/manual/fr/function.PDOStatement-rowCount.php
«Pour la plupart des bases de données, PDOStatement->rowCount() ne retourne pas le nombre de lignes affectées par une requête SELECT. À la place, utilisez PDO->query() pour faire une requête SELECT COUNT(*), puis utilisez PDOStatement->fetchColumn() pour récupérer le nombre de lignes retournées. Votre application peut ainsi effectuer la bonne action.»
Mais, personnellement, je ne sais pas comment faire (sauf avec 2 requêtes ) pour compter combien une requêtes SELECT reverra de ligne?

par exemple, comment faire pour savoir combien de ligne reverra:
Code :
SELECT id, titre, contenu FROM `articles` WHERE etat='1'
J'ai testé ça:
Code :
1
2
3
4
5
$stmt = $db->query("SELECT id, titre, contenu FROM `articles` WHERE etat='1'");
echo $stmt->rowCount(); // affichera 0, base de donnée MySQL 5
for ($i = 0; $i < 5; $i++) { // j'aimerai me débarrasé du 5 pour le faire varié dans le cas ou le nombre d'entrées est inférieur
  $articles[] = $stmt->fetch(PDO:FETCH_ASSOC); // $articles contiendra 5 entrées
}

Voilà, donc je cherche à savoir comment avec $stmt je peux connaitre le nombre de ligne qu'il reverra sans devoir faire une autre requêtes avec COUNT(*).

Je vous remerci d'avance pour votre aide, personnellement, j'avoue que là, je sèche comme une ..... sur un truc fondamentale et qui doit vraiment être tout bête.
juJuv51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2008, 15h06   #2
Membre du Club
 
Avatar de randimby
 
Inscription : décembre 2003
Messages : 64
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 64
Points : 57
Points : 57
Envoyer un message via MSN à randimby
Au lieu de faire avec une boucle for, fais avec une boucle do.

Pour arrêter la boucle, teste la valeur de retour de $stms->fetch()

du genre (en supposant $stmt->fetch() retourne false en cas d'inexistence d'une autre ligne)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
$i = 0;
$articles = array();
do
{
 $one_row = $stmt->fetch(PDO:FETCH_ASSOC);
 if ($one_row) 
 {
  $articles[] = $one_row;
 }
}
while ($one_row);
 
echo count($articles);
randimby est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2008, 11h14   #3
Invité régulier
 
Inscription : juillet 2007
Messages : 54
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 54
Points : 8
Points : 8
ou meme plus simple :

Code :
1
2
3
4
5
6
 
// $cnx est la connexion a ta base
$cnx->prepare("SELECT [une colonne de a table] FROM [ta table]");
$cnx->execute();
$row = $cnx->fetchAll();	
echo (count($row));
Voili voila
gorgoroth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2008, 13h49   #4
Membre confirmé
 
Inscription : décembre 2002
Messages : 452
Détails du profil
Informations forums :
Inscription : décembre 2002
Messages : 452
Points : 265
Points : 265
Je connais tres peu PDO. N'y a t'il pas d'équivalent à mysql_num_rows ?

$handle = mysql_query ("SELECT [une colonne de a table] FROM [ta table]");
echo mysql_num_rows ($handle);
weed est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h29.


 
 
 
 
Partenaires

Hébergement Web