PHP Comment savoir le nombre de reponse MYSQL

Bonjour,
Je voudrais savoir comment compter le nombre de reponse il y a à une requete.
Par exemple que je fasse :
SELECT * FROM utilisateurs WHERE departement = :departement
Et qu'en retour j'ai 8 par exemple.
(j'avais pensé a une "for each" et incrementation à chaque fois mais c'est lourd)
Merci !
--
Have a nice day

4 réponses

  1. Modérateur
    Bonjour,

    Tu peux utiliser COUNT :
    https://sql.sh/fonctions/agregation/count

    SELECT COUNT (*) FROM utilisateurs WHERE departement = :departement
    0
    1. Merci beaucoup !
      Et je retrouve le nombre comme ca : ?
      $req = $bdd->prepare('SELECT COUNT * FROM comptes WHERE id = :id');
      $req->execute(array('id'=>$id));
      $nombre = $req->fetch();
      0
    2. Modérateur
      @spylllerEssaye mais ça ne me semble pas mal.
      Je n'ai pas toutes les subtilités du PHP en tête :-)
      0
  2. Modérateur
    Bonjour
    Vu que tu es en pdo... tu fais ta requête normale en sélect *
    Puis tu fais un fetchAll
    Et un count (php) dessus
    0
    1. Modérateur
      Salut Jordane,

      Merci, je te laisse la suite :-)

      ++
      0
  3. Modérateur
    La solution proposée par Crapoulou fonctionne aussi. (après ça dépend si tu veux uniquement connaitre le nombre.. ou si tu veux aussi pouvoir afficher les lignes concernées)

    les codes seraient :
    Avec le nombre uniquement :

    
    $sql = "SELECT COUNT(*) as NB 
                  FROM comptes 
                  WHERE id = :id ";
    
    $datas = array(':id'=>$id) ;
    
    try{
      $req = $bdd->prepare($sql);
      $req->execute($datas);
    }catch(Exception $e){
      echo "Erreur ! " . $e->getMessage();
    }
    
     // Première solution en utilisant un fetch
      $row = $req->fetch();
      $nb = $row['NB'];
    
     // deuxième solution utilisant directement un fetchColumn
      $nb = $req->fetchColumn()
    


    Deuxième possibilité ...avoir le nombre de résultats... + les résultats
    $sql = "SELECT *
                  FROM comptes 
                  WHERE id = :id ";
    
    $datas = array(':id'=>$id) ;
    
    try{
      $req = $bdd->prepare($sql);
      $req->execute($datas);
    }catch(Exception $e){
      echo "Erreur ! " . $e->getMessage();
    }
    
    //on stocke les resultats dans un array
    $resultats = $req->fetchAll();
    
    // Nombre de résultats
    $nb = count($resultats);
    
    
    //affichage des résultats :
    if(!empty($resultats)){
      foreach($resultats as $R){
        print_r($R);
      }
    }
    
    0
    1. D'accord, merci beaucoup, j'ai plus qu'à appliqué =D
      0