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 :

requete SQL qui bug [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 requete SQL qui bug
    Bonjours,

    Je rencontre une nouvelle erreur.

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    public function login($pseudo, $password) {
    echo $pseudo . '<br />';
    echo $password;
    $dbh = mysql::getInstance();
    $sql = "SELECT count(*) AS nombreUser
    FROM account
    WHERE playername = '".$pseudo."'
    AND password = '".$password."'";
    $requete = $dbh->prepare($sql);
    $requete->execute();
    $nombreUser = $requete->fetch(PDO::FETCH_ASSOC);
     
    if (empty($pseudo) && empty($password) || !isset($pseudo) && !isset($password)) {
    echo "Erreur : Toutes les donnés ne sont pas fournis !";
    return FALSE;
    }
    else {
    if ($nombreUser['nombreUser'] < 1) {
    echo "Erreur : Compte innexistant !";
    return FALSE;
    }
    if ($nombreUser['nombreUser'] > 0) {
    echo "Felicitation : Connecter avec succes !";
    $this->retour = TRUE;
     
    $_SESSION['user']['pseudo'] = $prenom;
    $_SESSION['user']['password'] = $password;
    return TRUE;
    }
    }
    }
    Sa me met met que le compte inexistant alors qu'il existe dans la BDD

    Merci

    PS : ne clôturer pas le topic il est important.

    Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    1- Tu utilise PDO prepare or que tu mets directement les valeurs dans la requête. C'est pas bon, regarde un exemple sur le manuel php.

    2- C'est après que tu as exécuté la requête que tu as testé si les données existent ou non.

    A+.

  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
    Et bien vs script fonctionne très bien sur mon autre script.

    Essaye ma fonction et si tu trouve la solution ce sera un miracle.

  4. #4
    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
    J'ai trouvé une erreur j'ai oublié le s a account (table).

    Mais sa marche pas quand meme.

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    1- Tu ne dois pas mettre en dur les valeurs dans la requête mais les mettre en paramètre de la fonction execute.
    2- Tu as testés l’existence de variable "(empty($pseudo) && empty($password)" après avoir exécuté la requête, or que tu devrais le faire avant la requête.

    A+.

  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
    Oui j'ai testé ces valeurs.

    Sa retourne ce qu'il faut.

  7. #7
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    public function login($pseudo, $password) {
    echo $pseudo . '<br />';
    echo $password;
    $dbh = mysql::getInstance();
    $sql = "SELECT count(*) AS nombreUser
    FROM account
    WHERE playername = '".$pseudo."'  // Tu ne dois pas mettre ces valeurs directement dans la requête
    AND password = '".$password."'";
    $requete = $dbh->prepare($sql); 
    $requete->execute(); // Tu dois mettre en paramètre de cette fonction les valeurs que tu as mis dans $sql
    $nombreUser = $requete->fetch(PDO::FETCH_ASSOC);
     
    if (empty($pseudo) && empty($password) || !isset($pseudo) && !isset($password)) {  // C'est avant de lancer la requête que tu dois tester ça
    echo "Erreur : Toutes les donnés ne sont pas fournis !";
    return FALSE;
    }
    else {
    if ($nombreUser['nombreUser'] < 1) {
    echo "Erreur : Compte innexistant !";
    return FALSE;
    }
    if ($nombreUser['nombreUser'] > 0) {
    echo "Felicitation : Connecter avec succes !";
    $this->retour = TRUE;
     
    $_SESSION['user']['pseudo'] = $prenom;
    $_SESSION['user']['password'] = $password;
    return TRUE;
    }
    }
    }

  8. #8
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    A savoir que empty() englobe isset().
    C'est un pléonasme que d'utiliser les deux simultanément.

  9. #9
    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
    S'il vous plait aider moi.

    Voici le sql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    -- phpMyAdmin SQL Dump
    -- version 3.3.9
    -- http://www.phpmyadmin.net
    --
    -- Serveur: localhost
    -- Généré le : Ven 05 Octobre 2012 à 14:03
    -- Version du serveur: 5.5.8
    -- Version de PHP: 5.3.5
     
    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
     
     
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
     
    --
    -- Base de données: `darkminevqs4`
    --
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `accounts`
    --
     
    CREATE TABLE IF NOT EXISTS `accounts` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `playername` varchar(255) NOT NULL,
      `password` varchar(255) NOT NULL,
      `pwtype` tinyint(2) unsigned NOT NULL DEFAULT '0',
      `email` varchar(100) NOT NULL,
      `registerdate` date NOT NULL,
      `registerip` char(45) NOT NULL,
      `lastlogindate` datetime NOT NULL,
      `lastloginip` char(45) NOT NULL,
      `active` tinyint(1) unsigned NOT NULL DEFAULT '0',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
     
    --
    -- Contenu de la table `accounts`
    --
     
    INSERT INTO `accounts` (`id`, `playername`, `password`, `pwtype`, `email`, `registerdate`, `registerip`, `lastlogindate`, `lastloginip`, `active`) VALUES
    (6, 'anju', 'anju', 0, 'anju', '2012-10-05', '', '0000-00-00 00:00:00', '', 0);

  10. #10
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Citation Envoyé par thebarbarius Voir le message
    S'il vous plait aider moi.
    On ne t'aide pas là ?
    N'attend pas qu'on va coder à ta place.

    A+.

  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
    J'ai trouvé l'erreur et je vous remercie.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/11/2006, 11h25
  2. [MySQL] requete sql qui ne donne pas le bon array
    Par easyjava dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 02/11/2006, 15h41
  3. [hibernate]requete SQL qui ne passe pas
    Par Gromitou dans le forum Hibernate
    Réponses: 8
    Dernier message: 09/06/2006, 13h18
  4. [MySQL] requete sql qui ne s'exécute pas
    Par anto48_4 dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 16/03/2006, 10h12
  5. Réponses: 2
    Dernier message: 04/06/2004, 12h11

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