Recherche couple valeur dans table avec count()

Résolu

Bonjour,

Toujours en galère avec une requête, je me résous à poster ici.

Afin de voir si une personne est déjà inscrite, je pensais faire une requête sur la table membres sur les colonnes Nom et Prenom.
La requête directement dans la base fonctionne et donne bien la valeur à l'alias dejamembre 0 ou 1 mais dans code de la page, lorsque j'essaie d'afficher cette valeur pour ensuite la traiter avec un if else, j'ai les  messages ci-dessous :

Use of undefined constant dejamembre - assumed 'dejamembre' (this will throw an Error in a future version of PHP) in... Je comprends bien que c'est pas le bon choix pour le futur mais je ne sais pas comment corriger.

l'autre message est

count(): Parameter must be an array or an object that implements Countable in... Or c'est bien un tableau qui aura au maximum 1 ligne (soit le couple Non/Prenom est présent soit il ne l'est pas)

Le morceau de code est :

      // Vérification que Nom Prenom n'est pas déjà membre
        $sth = $bdd->prepare("SELECT COUNT(*) AS dejamembre FROM membres WHERE concat(Nom, Prenom) = '$Nom.$Prenom'");
        $sth->execute();
        echo count(dejamembre).'<br>';

Merci au bon samaritain qui m'expliquera comment je dois procéder.
Daniel
Windows / Firefox 107.0

2 réponses

  1. Modérateur

    Bonjour,

    Il faut faire un fetch ;..  voir même, ici, tu peux faire un fetchColumn  sur l'exécution de ta requête.

    Il ne faut pas non plus oublier de mettre un $  devant le nom de tes variables php

    bref:

     // Vérification que Nom Prenom n'est pas déjà membre
    $sth = $bdd->prepare("SELECT COUNT(*) AS dejamembre FROM membres WHERE concat(Nom, Prenom) =  :nomPrenom ");
    $sth->execute([':nomPrenom'=> $Nom . $Prenom ]);
    $dejamembre =  $sth->fetchColumn();
    echo $dejamembre.'<br>';

    1. Bonjour Jordane45,

      Je peux faire un fetchColumn alors que Nom et Prenom sont dans des colonnes différentes ?

    2. Modérateur
      @danielos77

      ce qui compte c'est le résultat du select où il n'y a qu'un seul champ.

    3. @jee pee

      OK. Merci bien.
      Bonnes fêtes de fin d'année à vous.

  2. Modérateur

    Bonjour,

    Ton sql effectue un count et te renvoie une valeur, 0 ou 1. Tu n'as pas besoin d'utiliser le count() de php tu dois juste afficher le resultat du select.