Banale requête de comptage

[Résolu]
Signaler
Messages postés
81
Date d'inscription
samedi 18 février 2006
Statut
Membre
Dernière intervention
28 juin 2021
-
Messages postés
81
Date d'inscription
samedi 18 février 2006
Statut
Membre
Dernière intervention
28 juin 2021
-
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

Messages postés
33207
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 août 2021
3 656
Bonjour,

Vu que tu fais du PDO, commence par ça
https://www.commentcamarche.net/faq/46512-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);
}

Messages postés
2446
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
4 août 2021
454
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,
Messages postés
81
Date d'inscription
samedi 18 février 2006
Statut
Membre
Dernière intervention
28 juin 2021
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
Messages postés
81
Date d'inscription
samedi 18 février 2006
Statut
Membre
Dernière intervention
28 juin 2021
1
Bonjour Jordane,

Merci pour le lien
J'avais commencé par :
https://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code

et là je revenais aux bases en lisant
https://www.commentcamarche.net/faq/27489-pdo-une-autre-facon-d-acceder-a-vos-bases-de-donnees

De la lecture en vue.
Bonne continuation dans les "sauvetages"