Probleme avec pdo et addr email en php

Résolu
Bonjour à tous :D
Je fais un site, et il y a un espace membres, sauf que pour s'inscrire tout va bien sauf le PDO avec php et mysql.
Je fais une requête préparée pour savoir si l'e-mail existe déjà ou non dans la table puis j'exécute la requête avec un array :

 try       //On essaye de se connecter à la BDD  
  {  
    $bdd = new PDO('mysql:host=localhost;dbname=membres', 'root', '');  
  }  
  catch(Exception $e)       //Si cela ne marche pas, on recupere l'erreur  
  {  
    die('Erreur : '.$e->getMessage());  
  }  

$nombremail = $bdd->prepare('SELECT COUNT(*) FROM membres WHERE email = :email_inscr') or die(print_r($bdd->errorInfo()));   
   
$nombremail->execute(array('email_inscr' => $_POST['email_inscr']));  

if ($nombremail != 0)    //Et c'est ici ou sa plante, je sais pas comment faire, alors j'ai écrit au pif : si n'est pas égal à 0.  
{  
   //Votre adresse e mail est déjà utilisée par un membre...  
}  


Je suis complètement bloqué.
Si vous pouviez m'aider ce serai super sympa de votre part. Merci.

2 réponses

  1. Merci beaucoup pour ton aide :D trop top
    0
    1. $nombremail est un objet (PDOStatement), pas le résultat de la requête.
      Pour gérer les erreurs, il ne faut surtout pas utiliser "or die" mais la structure "try catch" !

      $nombremail = $bdd->prepare('SELECT COUNT(*) AS nb FROM membres WHERE email = :email_inscr');
      $nombremail->execute(array('email_inscr' => $_POST['email_inscr']));
      $donnees = $nombremail->fetch(PDO::FETCH_OBJ);
      $nb = $donnees->nb;
      1
      1. Merci je teste tout de suite :D
        0
      2. Alors, enfait, j'ai écrit :

          $nombremail = $bdd->prepare('SELECT COUNT(*) AS nb FROM membres email = :email_inscr');  
          $nombremail->execute(array('email_inscr' => $_POST['email_inscr'])); 
          $donnes = $nombremail->fetch(PDO::FETCH_OBJ); 
          $nb = $donnes->nb; 
          if ($nombremail != 0) 
          { 
              //Votre meail est deja utilisé par un membre... 
          } 
        


        Je crois que je me suis planté encore :P
        Notice: Trying to get property of non-object in C:\wamp\www\inscription\registerok_fr.php  on line 42
        Ligne 42:   $nb = $donnes->nb;
        
        Notice: Object of class PDOStatement could not be converted to int in C:\wamp\www\inscription\registerok_fr.php on line 43
        Ligne 43:   if ($nombremail != 0)
        

        Qu'est ce que je dois mettre à la place de if($nombremail != 0) ??
        Merci.
        0
      3. La variable qui contient le nombre est $nb
        Dans la ligne avant le "if", tu peux remplacer "$nb" par "$nombremail"
        0
      4. Je te dois tout :D merci beaucoup :) Mais il reste un tout petit truc. J'ai mis :
          $nombremail = $bdd->prepare('SELECT COUNT(*) AS nb FROM membres email = :email_inscr'); 
          $nombremail->execute(array('email_inscr' => $_POST['email_inscr']));
          $donnes = $nombremail->fetch(PDO::FETCH_OBJ);
          $nb = $donnes->nb;
          if ($nb != 0)
          {
            $email_error1 = "Votre email est déjà utilisée par un membre.";   
            $i++;
            $nombremail->closeCursor(); 
        


        J'ai ete inscrit et tout, je suis allé voir dans ma BDD tout y est, mais il me dit
        Notice: Trying to get property of non-object in C:\wamp\www\inscription\registerok_fr.php on line 42
        Ligne 42: $nb = $donnes->nb;
        0
      5. $nombremail = $bdd->prepare('SELECT COUNT(*) AS nb FROM membres email = :email_inscr');
        Ta requête est mauvaise
        0