Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
J'ai une requête assez qui fait intervenir plusieurs tables :
SELECT `sportifs`.`sportifs_id`, `sportifs`.`sportifs_clubid`, `sportifs`.`sportifs_discipline`, `sportifs`.`sportifs_listedept`, `sportifs`.`sportifs_listeregion`, `personne`.`pers_id`, `personne`.`pers_nom`, `niveaux`.`nsportprat_id`, `niveaux`.`nsportprat_rang`, `niveaux`.`nsportprat_techtypesport_id`, `postes`.`psportprat_id`, `postes`.`psportprat_rang`, `postes`.`psportprat_techtypesport_id` FROM `sportifs` INNER JOIN `personne` INNER JOIN `niveaux` INNER JOIN `postes` WHERE (sportifs_discipline = 44) AND (pers_id = sportifs_id) GROUP BY `sportifs_id`
et si dans mon traitement je fais :
$sql = $select->__toString(); $this->logger->debug('Requete : '.$sql); $smt = $this->_db->prepare($select->__toString()); $smt->execute(); $nb = $smt->columnCount();
La variable $nb contient 13 alors que 37 lignes sont retournées.
Pour avoir la bonne valeur je suis obligé de faire :
$result = $smt->fetchAll(); $nb = count($result);
Et là c'est bon, mais j'aurais voulu économiser le fetchAll().
J'ai vu que c'était une anomalie recensée pour DB2, mais qu'en est il de MySql ?
Dernière modification par Jean-Marc Rigade (09-07-2008 18:23:02)
Hors ligne
Hello,
C'est pas un "row count" que tu veux plutôt ? Dans ce cas tu fais juste un :
$smt->count();
A+
Hors ligne
En effet je ne sais pas pourquoi je voulais compter les colonnes, c'est idiot.
Merci de m'avoir mis sur la bonne voie.
En fait la bonne instruction sur un objet PDO est :
$nb = $smt->rowCount();
Hors ligne
Hello,
Je pensais que tu utilisais Zend_Db qui te retournais un Zend_Db_Table_Rowset et dans ce cas, c'est un count.
A+
Hors ligne