IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Vérifier existence d'un pseudonyme [PDO]


Sujet :

PHP & Base de données

  1. #1
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut Vérifier existence d'un pseudonyme
    Bonjour,

    J'utilise mysql et php.

    Je souhaiterai que lorsqu'un membre s'enregistre via un formulaire et que lorsque les donées sont envoyé a la BDD:

    - Verifier si le pseudo n'existe pas dans la BDD.

    Mais tout ceci en PDO.

    Sans PDO j'utilisai mysql_fetch assoc.

    Mais impossible de trouver un équivalent en PDO.

    Si vous avez la solution, je vous suis entièrement reconnaissant

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    Citation Envoyé par thebarbarius Voir le message
    Sans PDO j'utilisai mysql_fetch assoc.
    et tu utilisais quelle requête SQL ?

  3. #3
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    Sa ressemblait a sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
      $data = mysql_fetch_assoc($req);
     
      if($data['password'] != $password_form) {

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $dbh = new PDO(DSN, LOGIN, MOT_DE_PASSE);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // ...
    $count = $dbh->prepare('SELECT COUNT(*) FROM utilisateurs WHERE login = :login');
    $count->bindValue('login', $_POST['login'], PDO::PARAM_STR);
    $count->execute();
    if ($count->fetchColumn()) {
        echo 'Cet identifiant est déjà utilisé';
    } else {
       echo 'ok';
    }

  5. #5
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    Merci, je teste.

    J'éditerai mon post pour t'en informer.

  6. #6
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    Ok sa marche.

    Par contre je trouve ce code très lourd par rapport a mon ancienne version et beaucoup moins compréhensible.

    Déjà je trouve que "bindValue" inutile.
    Je préfère utiliser des variable.

    Encuite questions:
    - Pourquoi on fait un execute() a la place d'un query ?
    - A quoi sert ce code -> PDO:ARAM_STR.

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Les goûts et les couleurs, surtout concernant PDO qui offre bien des façons de faire à tous les niveaux.

    Pourquoi on fait un execute() a la place d'un query ?
    Parce qu'ici c'est une requête préparée. Je trouve ça bien plus propre, facile à maintenir/(re)lire et sécurisé que des concaténations/interpolations.

    A quoi sert ce code -> PDO::PARAM_STR.
    PARAM_STR indique le type PHP/SQL de la valeur dans la requête. Ici une chaîne (donc les quotes c'est géré en interne disons). (PARAM_STR étant une constante de la classe PDO)

  8. #8
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    et pour "fetchColumn()" ?

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Avec une requête SELECT COUNT (sans group by) on attend qu'un résultat (une seule ligne d'une seule colonne) donc on lit directement ce résultat avec fetchColumn. (un peu à la manière de mysql_result)

  10. #10
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 191
    Points : 275
    Points
    275
    Par défaut
    Citation Envoyé par thebarbarius Voir le message
    Ok sa marche.

    Par contre je trouve ce code très lourd par rapport a mon ancienne version et beaucoup moins compréhensible.

    Déjà je trouve que "bindValue" inutile.
    Je préfère utiliser des variable.

    Encuite questions:
    - Pourquoi on fait un execute() a la place d'un query ?
    - A quoi sert ce code -> PDO:ARAM_STR.
    c'est cencé éviter les injections sql le fait d'utiliser prepare et comme dit plus haut c'est pdo qui fait le boulot de controle pas toi

  11. #11
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Points : 172
    Points
    172
    Par défaut
    Merci de vos réponses qui m'ont aidé a résoudre le problème.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. vérifier existance des fichiers
    Par big1 dans le forum Windows
    Réponses: 3
    Dernier message: 05/06/2007, 13h18
  2. [Débutant]Vérifier existance d'un enregistrement dans une table
    Par fabiolous dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 25/04/2007, 12h01
  3. Vérifier existence fonction dans une classe
    Par zoparg dans le forum Langage
    Réponses: 2
    Dernier message: 17/02/2007, 13h29
  4. Réponses: 5
    Dernier message: 29/03/2006, 14h55
  5. vérifier existence d'une table
    Par scoder dans le forum Installation
    Réponses: 5
    Dernier message: 17/01/2005, 14h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo