Banale requête de comptage

Résolu
Bonjour,
Je cherche à partir d'une variable compter le nombre d’occurrence dans une colonne.
La requête fonctionne bien dans la BDD
Le debug en print_r($request) comme print_r($nbre) donne : Fatal error: Uncaught Error: Call to a member function fetch() on string in /home/anegjxuk/public_html/ULM/EnvoiCreationNumStage.php:24 Stack trace: #0 {main} thrown in /home/anegjxuk/public_html/ULM/EnvoiCreationNumStage.php on line 24

voici mon code :
<?php

  //activation de l'affichage des erreurs PHP
  error_reporting(E_ALL);
  ini_set('display_errors', TRUE);
  ini_set('display_startup_errors', TRUE);

echo "TEST";

        //on récupère proprement la variable avant de l'utiliser
        $Saison = !empty($_POST['Year']) ? trim($_POST['Year']) : NULL; // on récupère la variable NULL et on supprime les "lead spaces"

     //test d'affichage de la variable
    echo '<br>'.$Saison.'<br>';     //Test OK => passage en commentaire

    if($Saison){ // si la variable $Saison existe et n'est pas nulle/vide
 
  //on inclut le fichier de connexion à la bdd
  require_once "../secure/cnxBdd.php";

        //requête pour compter le nb d'occurence égale à la variable $Sasion dans la colonne Saison  
        $request = "SELECT COUNT(*) FROM Stages_ULM where Saison = ".$Saison;  
        //on envoi la requête et on récupère le résultat dans la variable $result
        $nbre = $request->fetch();

//debug
print_r($nbre).'<br>';

        //on affiche le résultat 
        echo $nbre.'<br>'; 

    }
?>


Un grand merci d'avance.

4 réponses

  1. Salut,

    Le message d'erreur indique que tu essayes d'appeler la fonction fetch() sur une variable de type string : en effet ta variable $request est juste une chaine de caractère, elle ne possède pas de fonction.

    Tu as simplement oublié d'exécuter ta requête sql.

    Bonne journée,
    1. Bonjour Pitet,
      Comme tu peux t'en douter, je suis un vrai branque en codage.
      $nbre = $request->fetch();

      n'envoie donc pas la requête pour execution ?
      Quelle serait la bonne syntaxe ? svp.
      Merci
      1. Modérateur
        Bonjour,

        Vu que tu fais du PDO, commence par ça
        https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

        Tu y trouveras un exemple d'exécution de requête... ( prepare puis execute )

        //préparation de la requête et des variables
          $sql= "SELECT COUNT(*) FROM Stages_ULM where Saison = ? ";  
              
         $datas = array($Saison);
        
        //Execution de la requete
        try{
          $requete = $bdd -> prepare($sql) ; // $bdd à renommer par le nom de ta variable de connexion
          $requete->execute($datas) ;
        
           $nbre = $requete->fetch();
        
        }catch(Exception $e){
          // en cas d'erreur :
           echo " Erreur ! ".$e->getMessage();
           echo " Les datas : " ;
          print_r($datas);
        }